Home
What's new

Everything that has shipped, and what it cannot do

Dated to the day the code landed, written from the code rather than from a commit message, and carrying the limits — a release note that only lists wins is an advertisement.

Updates
59
Areas
7/ 7
Shipping days
9

4 updates

  • History says when the line under a take is a transcript, not a script

    Every take in the history strip shows a line of text, and until now it looked the same whether you wrote it or a machine did. On a voice-changer conversion, and on any clip you have edited, that line is the engine listening back to the finished audio and writing down what it heard — nobody typed it. Those rows now say so. The "Use again" button has also been withdrawn from them: it re-runs the line as a script, and on an edited clip it was quietly offering to synthesise the machine's transcript instead of your words.

    Recognition is English only, so on non-English audio the line is nonsense rather than merely approximate, and accented characters are dropped — "José" comes back as "Jos". A sound-effect mix carries whatever text its source take had, and the row cannot tell whose, so it is left unmarked rather than labelled wrongly. Nothing is retroactive in the sense of changing stored text: the line was always the transcript, it is only now marked as one.

    Studio#
  • Choose the speech model for a single voice-track break

    The voice-track composer now has a Model control beside the voice, the same one the speech studio has. It opens on whatever the voice is saved with, and picking V4, V4 Likeness or V4 Strata overrides it for that break alone — the voice itself is not changed, and the next break opens on the saved model again. Until now the composer rendered every break on the voice's saved model with nothing on the screen saying which one that was, and the only way to try a different one was to edit the voice.

    A professionally cloned voice can only render on V4, so the other two models are shut for it and the button says why. V4 Strata is shut while it is unavailable. On a caller break the choice applies to both the host and the caller. Recording a take in your own voice is unaffected — no model is involved.

    Broadcast#
  • Every place a transcription starts now says what the recogniser can read

    Our recogniser reads English, and the transcript text it returns is plain ASCII. Neither is a setting — it is which model the engine loads — and most of the places you can start a transcription from did not say so. Non-English audio is not refused: it comes back as English-sounding nonsense, billed like any other transcription and hard to tell from a bad recording. That was true of the transcription endpoint in the API, of reading the words in a clip you are editing, of the “From an existing ad” upload in the script writer, and of speaking a direction in the voice booth — all of which bill for it. Reading a clip is the sharpest of them, because the word timings are what the editor snaps your cuts to, so a clip we read for you in another language produced a timeline built on words nobody said. The second limit had only ever been written on one screen: accented characters are dropped rather than converted, so a name like “José” comes back “Jos” even when the recogniser heard it correctly — which happens on English recordings too, and the per-word timings are not stripped, so they can disagree with the text.

    Nothing about the transcription itself changed; what changed is that the limits are stated where you can act on them. Non-English audio is still accepted and billed rather than refused — the engine reports no error for it, so there is nothing on our side that can tell nonsense from a bad recording. Reading a clip in the editor still starts on its own when you open one, so there is no moment before that spend to warn you at; the note there is in the API reference and on the panel that explains what reading does. Dubbing is the exception and always was: it offers English as its only source language, so the situation cannot arise. Two admin screens still word the English-only limit themselves rather than taking it from one place.

    Fixes#
  • Deleting a spot no longer takes its music bed away from your other spots

    The Mixer's bed library is built out of the beds your spots have already used, and picking one from it — or reopening a spot and mixing it again — points the new spot at the same file rather than making a copy. Deleting a spot used to remove that file whatever else was using it, so tidying up an old spot could take the bed out from under a current one: the library went on listing it, its player would not play, and re-mixing the spot that still wanted it failed outright. The same went for a background sound staged from the effects library. A bed or a background sound is now kept for as long as any spot is still using it, and removed when the last spot using it is deleted. Audio you have already mixed was never affected — a finished spot keeps its master.

    Reclaiming a shared bed now means deleting every spot that uses it rather than any one of them. If two spots sharing a bed are deleted at the same moment, each can see the other still holding it and the file is left behind rather than removed — a storage cost rather than a broken spot. One gap is narrower rather than gone: a bed you have picked in the Mixer but not yet mixed with is not attached to any spot, so if the last spot using it is deleted in the meantime, mixing still fails. Nothing here changes the read: that belongs to the take in your history and is removed with it.

    Fixes#

14 updates

  • The privacy policy now names every service your work passes through

    The subprocessor list on our privacy policy is derived by hand from the code, and it had fallen behind it. The music engine that composes the mixer's beds moved to a different Google Cloud region three weeks ago and the page still named the old one — a statement about where your audio is processed, which is the one thing that page exists to get right. Two more of our own services were missing from it altogether: the stem separator that splits a bed into its parts, which receives your audio, and the importer that fetches a track when you paste a link into the mixer. The traffic and weather entry listed three things that go to the map vendor and there are four — the map itself is theirs, fetched a tile at a time as you pan. And the paragraph about places you tell us to send things described a webhook endpoint, which gets a link to your audio, without saying that an FTP, SFTP or Dropbox delivery target gets the file itself. Nothing about what the product does changed; what the page says about it is now accurate.

    The list is still written by hand. What is new is a check that fails when a module opens a connection to somebody the page does not account for, and when one of our services drifts from the region we actually deploy it to. That check reads our own code and deploy configuration, so it cannot see a service reached through a library that does not use ordinary web requests, and it cannot confirm a region against the running deployment. Delivery to an FTP or SFTP server is one such case: the behaviour is described on the page, and the check cannot watch it.

    Fixes#
  • Clearing your history no longer takes a traffic or weather bulletin off air

    Every bulletin we read for you is banked in your history as an ordinary take, and the published bulletin was pointing at that same audio file rather than holding a copy of it. So deleting the take — through the API, or by asking the assistant — destroyed the audio of a bulletin that had already gone to air. The report still read as published, with a duration and a file size beside it, and nothing on the screen said the file was gone; if it was the newest bulletin for that market, the pull URL your playout computer fetches simply started failing. A bulletin cannot be re-read after the fact, so there was nothing to recover. The history row still goes when you delete it; the file now stays for as long as a bulletin needs it.

    Because the file stays, deleting history no longer frees the storage a bulletin is using. To remove one for real, delete its market first — that removes the bulletins — and then the history rows, which now have nothing holding them back. The API says which happened on every delete, so a script clearing history in bulk can count what stayed. Bulletins whose audio was already destroyed before this shipped are not recoverable, and nothing sweeps for them.

    Fixes#
  • Deleting a conversion from history no longer strands the report it belongs to

    When somebody reports a word your voice says wrongly, we convert their recording into that voice so a reviewer hears the flub said right — and that conversion is banked in your history as an ordinary voice-changer take. The report and the history row were sharing one audio file rather than holding a copy each, so deleting that take through the API or by asking the assistant destroyed the reviewer's only copy. Worse than a missing player: the report still claimed to have a conversion, so it refused to make another one. One deleted take and the word could never be reviewed again, with nothing on the screen saying why. Deleting the take now hands the report back its “not converted” state, with a note explaining what happened and the button to convert it again.

    It fixes reports from now on. A report already stranded by a take deleted before this shipped still shows a conversion it cannot play, and nothing sweeps for those — the record of which take it was has always been kept, so they could be found and repaired, but that has not been done. Converting again does not cost you anything, as it never did, and it does not give you a fresh daily allowance either: the report keeps the slot the first conversion took.

    Fixes#
  • A video headline no longer runs off the side of the frame

    The video studio wraps a title by estimating how wide it will be, because the same code draws the preview in your browser and cannot measure type there. The estimate had four holes and they all ended the same way: a title with no spaces in it was never broken at all, so a URL, a long compound word, or any Chinese or Japanese title was drawn as one line at full length and sliced off at the edge of the picture. A wide character was counted the same as a narrow one. Upper-cased titles were not allowed for, so ordinary copy overflowed on the templates that set their headline in capitals. And the kicker above the title and the credit under a pull quote were not fitted at all. Measured across every template and shape with ordinary copy, 244 of 728 combinations put type past the edge, by as much as 2,575 pixels on a frame at most 1,920 wide — more than twice the width of the picture. All of it renders correctly now, and a title with no spaces is broken across lines rather than run off; a kicker too long for its line is shortened with an ellipsis rather than clipped.

    It changes videos rendered from now on and cannot repair one you have already made — re-rendering is what fixes it. Two things it does not cover, both measured: a title made entirely of the very widest capitals can still overflow, because a single average advance cannot model a run of W's and the figure is calibrated on ordinary prose; and the server has no Chinese, Japanese or Korean typeface installed, so a title in one of those scripts is laid out correctly and still drawn as empty boxes until one is added. Two lower-third templates also run their subtitle a few pixels past the bottom when every field is filled, which is older than this fix and is not part of it.

    Fixes#
  • The performance pass stops asking for breaths the engine will not take

    A blank line becomes a real breath only while the engine's text normalizer runs — and it skips itself for a language that is not English, or when you switch it off. The performance pass and the booth's direction were told about that breath anyway, listed beside the pause markers as one of the engine's controls, so on a Spanish read the model put its silence into blank lines that produce nothing and skipped the markers that would have worked. The read came back flat and nothing in it said why. Both now ask before they write the prompt: where a blank line is not a control the model is told so and steered to explicit pause markers instead. The booth had a second half to it — the voice's own language and normalization were being merged in after the direction was interpreted rather than before, so the model was directing a Spanish voice while reading English defaults.

    It changes the scripts these two features produce from now on; a script already prepared this way keeps whatever it was given, and re-running the pass is what fixes one. Blank lines you typed yourself are untouched — the engine's rule has not changed, only what the model is told about it. And the pass still cannot see anything you have not set on screen yet: it prepares the script for the take as the studio is configured at the moment you press it, so changing the language afterwards leaves the prepared script written for the old one.

    Fixes#
  • A professionally cloned voice is no longer rendered without its adapter

    Only V4 can load the adapter a professional clone trains. Picking V4 Likeness for one of those voices used to be accepted anyway — the adapter was simply left behind and the engine returned the untrained instant clone, charged and filed under the trained voice's name, with nothing to tell the two apart afterwards. V4 Strata refused the same thing outright, so which model you chose decided whether you were told. Both are refused now, everywhere a render starts: the studio, the Mixer, a project, a bulk sheet, the API and the agent. The studio no longer offers the two models that cannot use the adapter while such a voice is selected, and says why, so the refusal is not the first you hear of it after writing a script.

    It changes renders from now on and cannot tell you which past takes were affected — a take made this way was stored as an ordinary render of that voice, so there is no mark on it to find. If you have been rendering a professionally cloned voice on V4 Likeness, the takes you already have are the untrained clone, and re-rendering them on V4 is what produces the trained read. The refusal names the model to choose rather than changing it for you: a model is a choice about how the read sounds, and picking one on your behalf mid-render would be a different take from the one you asked for. If you actually wanted the untrained read of that speaker, duplicating the voice gives you one — a duplicate does not carry the adapter — but it takes a voice slot, so a workspace at its limit loses that. And a professionally cloned voice SHARED with you by another workspace can only be fixed by its owner; on your side, choosing V4 for the render is the way through.

    Fixes#
  • A voice can no longer be saved onto a model it cannot render on

    Two combinations of a voice's model and its saved settings cannot produce the render you asked for, and until now you could save either of them and only find out one take at a time. A voice set to V4 Strata with a default language other than English or Chinese was refused by every surface that used it — the studio, the Mixer, a project, a bulk sheet, the API — with a message naming a setting the voice page draws no control for. And a professionally cloned voice moved onto V4 Likeness quietly stopped using the adapter you paid to train: it kept rendering, as the untrained clone, under the trained voice's name. Both are refused when you save now, with a sentence saying which model or which language to choose, and the same refusal applies whether the change comes from the voice dialog, the settings panel, the API or the agent. Professional cloning is refused for the same reason before it starts: training a voice that is not on V4 spent a full run producing an adapter that model could never load.

    It applies to saves from now on and repairs nothing already stored, and the two old states do not fail the same way. A voice already set to Strata with a language it cannot speak keeps being refused at render, and the voice page now says so on its Strata panel — from the console the only fix there is to switch the model back to V4. A voice already carrying a trained adapter on V4 Likeness no longer renders quietly as the untrained clone either — the entry above refuses that at render and says so on the voice page. Editing something unrelated on either voice still saves — only a change that introduces one of these states is refused. Availability is deliberately not part of this: a Strata voice still saves while the service is briefly unreachable, because a passing network problem must not stop you editing a voice.

    Fixes#
  • The Mixer now says when your read was rewritten before the take

    Choosing a read to mix shows you the script that was submitted, and three things can change a script on its way to the voice: your pronunciation dictionary respells words, tags and stage directions are taken out, and an over-long pause marker is pulled back inside what the engine will do. So you could type a sponsor's name in the Mixer, hear it said differently in the finished spot, and find nothing on the screen to explain it. The read you have selected now carries the same note the Text to Speech studio has been showing — naming the words the dictionary respelled and linking straight to it — whether you just generated it here or picked one you made last week.

    The note sits beside the Mix button rather than on every row of the picker, so it is on screen whenever there is a read ready to mix — including one that was already selected for you when you arrived, which is how a read from the Script Writer opens. It applies from now on: a read rendered before these notes started being kept has nothing recorded against it and shows no note, which is not the same as one that was left alone. Multi-voice documents in the picker say nothing yet — a document's rewrites belong to its individual lines, and there is nowhere on that row to show a line. Voice-changer conversions are unaffected, because there is no script to rewrite in a conversion.

    Studio#
  • Your history now says when a script was rewritten before the take

    Three things can change a script on its way to the voice: your pronunciation dictionary respells words, stage directions and tags are taken out, and an over-long pause marker is pulled back inside what the engine will do. The studio has been saying so under a take since it was made — but only until you reloaded the page. Everything after that showed you the words you typed, with a player saying something else and nothing in between to explain it. Those notes are kept on the take itself now, so they are still there tomorrow, and they appear under every past take in the history strip — on your dashboard and under the studio — rather than only on the one you just pressed Generate on.

    It applies from now on: a take rendered before today has nothing recorded against it and shows no note, which is not the same as a take that was left alone. A note names up to six respelled words and counts the rest, and the same six are what a note kept on the take can show later. Voice-changer conversions are unaffected — there is no script to rewrite in a conversion.

    Studio#
  • The privacy policy now lists every email we can send you

    Both the privacy policy and the terms said this product sends exactly two kinds of message — a workspace invitation and a password reset you asked for. There are three. The one missing from the list is the one you are least likely to be expecting: if an administrator generates a one-time password reset link for your account, we email you to say so, precisely so that an unexpected copy is something you can raise rather than something that happens quietly. That message has been sent all along; the documents simply never counted it, and the privacy policy went on to name a lawful basis for “the two messages we send”, which left the third one undeclared. Every sentence that stated the count is corrected — including one in the list of companies who handle your data, which said the same thing in different words — and the count and the list are now generated from the code that actually sends the mail, so a new kind of message shows up in both documents by itself.

    Nothing about what we send changed — this is a correction to what was written down, not a new message, so the date the terms took effect has not moved. We still send no marketing email of any kind.

    Fixes#
  • A long stage direction is no longer read out

    Anything in square brackets is a note to the talent, not words to say, so it is taken out before a voice ever sees it — except that the rule stopped at forty characters, and a real direction is usually longer than that. “[SFX: a car door slams, then footsteps on gravel]”, “[Announcer, warmly, with a slight smile in the voice]” and the placeholder labels that come with a pasted slide — “[Text Box 29, Content Placeholder 12, Slide 4]” — were all long enough to slip past it and be read out in the take, and because nothing had been removed the panel that lists what was taken out correctly showed nothing. Length no longer comes into it. The same goes for tags like <laugh>. A paste that is nothing but a label is refused before it costs you anything, which it should always have been — the check that refuses it was reading the same forty-character rule, so a long label was rendered and billed.

    A direction that wraps onto a second line is still read out — brackets are matched within a line on purpose, because a stray opening bracket would otherwise swallow every line down to the next closing one, and losing your copy is worse than hearing a direction. Keep a direction on one line and it goes. For the same reason an opening bracket you never close is still treated as the start of one: it stops at the next opening bracket, but if there is no other bracket before the next closing one, the words in between go with it.

    Studio#
  • A refunded charge no longer shows as paid

    Refunds are taken by hand in the payment gateway, and until now nothing brought that back: the charge went on sitting in your billing history as a green “Paid”, permanently, on the one screen you would open to check whether your refund had gone through. A refunded or voided charge is now marked as such, with the date it was given back and the gateway’s own reference for it beside the reference for the original charge. Where a charge was part-paid from account credit, the amount shown as returned is the part that actually went back to the card rather than the invoice total.

    The record is written when support records the refund, not by the gateway telling us: a refund taken and not written down still reads as paid. Account credit that went towards a charge is a separate balance and is not returned by this — it is given back on its own, and shows on your statement when it is.

    Fixes#
  • Paragraph breaks in a written script now actually breathe

    A paragraph break is a breath: the engine holds a short, exact silence wherever a read has a blank line in it. The Script Writer was asking for that break in a form the engine does not recognise — a single line break rather than a blank line — so every paragraph it wrote was read straight through, with nothing on screen saying the pause had gone missing. It asks for a blank line now. The fit meter counts those breaths as well, so the words it budgets are what is left of the slot once the breathing is paid for, and it says on the card when blank lines are what narrowed the number — previously a script with no pause markers in it could watch its budget shrink with nothing to explain why.

    The breath is inserted by the same pass that reads numbers and dates aloud, so a read with that setting turned off, or written in a language the pass does not cover, breathes at the paragraph breaks only as much as the voice does naturally. The meter reserves the time either way. That is the safe direction — such a read lands short of its slot rather than over it — but it is not free: on a paragraphed read that was already near the top of the band, the meter will call it close, or long, when the silence it reserved is not going to play.

    Studio#
  • A pause in a station’s own bulletin copy now costs the slot too

    Traffic and weather bulletins are built around copy the station writes once and hears verbatim on every bulletin — an intro, a sponsor billboard, a sign-off. A pause marker in any of them becomes real silence, and the length the writer aimed for counted only the words, so a thirty-second bulletin whose fixed copy carried three seconds of silence was written to fill thirty seconds with speech and then ran thirty-three. The aim now pays for the silence as well, measured in the order the bulletin actually airs — which matters, because the body sits between the sponsor and the sign-off, so a marker at the end of a sponsor line is a real pause while the same marker at the end of the sign-off is none at all.

    It is an aim rather than a guarantee: the true length is the one measured on the finished audio, and a station whose fixed copy already fills most of a short slot still gets a floor of twelve words for the body rather than none.

    Broadcast#

3 updates

  • A pause in a script now costs the slot it takes

    The fit meter under a script added a pause marker’s seconds to the read time and never took them out of the word budget, so a thirty-second read carrying three seconds of silence showed “Fits the slot” in green beside “about 33.0s of :30” — and “Tighten to fit”, one click away, refused it as already inside the budget. The budget is now what is left of the slot once the silence is paid for, the meter says how much silence it found, and the marker arithmetic matches the engine’s own: a bare [pause] is worth six tenths of a second, adjacent markers merge, and a marker at the very start or end of a read produces none at all.

    The words-per-second band is still an English one on all eight writing languages.

    Studio#
  • A webhook endpoint that has stopped working now says so

    The endpoint list under API & Webhooks used to judge an endpoint by its last HTTP status alone, and it had no way to show the failures that arrive without one. A timeout, a refused connection or a DNS failure left no mark at all — so an endpoint whose host had gone read exactly like one that had never had a problem — and a redirect showed green even though a redirect is never followed and never retried. Every endpoint now carries the same verdict the delivery table below it uses, with the receiver’s own reason under it.

    It describes the last attempt, so an endpoint that broke since it last fired stays green until the next event. A retry still climbing the ladder shows amber on the delivery and red on the endpoint: the delivery may yet land, the last attempt did not.

    API & agent#
  • See what was changed before your script was read

    Highlight

    Three things can change your words on the way to the voice: your workspace's pronunciation dictionary respells names, tags like <laugh> are removed because the engine would read them aloud, and over-long pause markers are pulled back inside its window. Text to Speech and Try this voice now say so under the take, naming the words the dictionary respelled and linking straight to it. The Voice Booth says it too, including the dictionary, which it never used to mention.

    It describes the take in front of you and is not kept: reload the page and the note is gone, and the History strip below does not carry it. The Mixer, Multi-Voice and Projects render on a queue and do not show it yet.

    Studio#

1 update

  • V4 Strata joins the speech studio

    Highlight

    Choose V4 Strata beside V4 Likeness in Text to Speech, or save it as a voice's default model. It creates a fresh read from your script and the voice's reference recording. Your previous model settings return when you switch back.

    Strata uses its own delivery settings, so the usual tuning sliders are hidden. It supports English and Chinese text-to-speech; voice conversion, live streaming and professionally trained adapters use the other models.

    Voices#

1 update

  • Your workspace's own activity log

    Highlight

    Settings → Activity lists what has happened in your workspace and who it is attributed to — voices created and deleted, people invited, keys minted, plans changed — newest first, searchable, and filterable by area. Support actions taken on your workspace from our side appear in the same list, marked as ours rather than as one of your members.

    The last 90 days, and open to owners and admins since it names the member behind every action. Changes to a person's own account are not listed to anybody, and neither are IP addresses. A row driven by an API key is marked as such: it names whoever issued the key, not whoever made the call.

    Platform#

3 updates

  • The console in thirteen languages

    Highlight

    The interface reads in thirteen languages, chosen from a picker in the sidebar that names each in its own script — Deutsch, 日本語, العربية — with Arabic laying the whole shell out right to left. Make no choice and it follows what your browser asks for.

    It changes the console only, not the voices you render with or the language your audio is spoken in.

    Platform#
  • Weather bulletins

    Drop a pin on a market and weather bulletins run on the same dayparts, voices, house wording and delivery targets as traffic. An active warning always leads, so a listener who hears only the first sentence hears the warning, and the bulletin reads the agency's own wording rather than improvising safety advice of its own.

    Today plus three days ahead, and no further.

    Broadcast#
  • Pull URLs and webhooks deliver

    Two ways of getting a finished bulletin out to playout did not work. Every pull URL a station installed answered a 404, because nothing served the address the panel printed, and webhook targets failed outright because the bulletin events were never offered for subscription.

    Fixes#

11 updates

  • Non-destructive voice editor

    Open any finished read as a waveform with its words underneath, then cut, trim, fade, ride the level or drop a pause in. Nothing is written until you save and saving mints a new clip, and a gap you silence is filled with the clip's own room tone rather than with digital silence.

    Up to 80 edits in a single save; past that a read wants re-recording rather than editing.

    Studio#
  • Audio cleanup

    Drop in a rough recording — a phone tag, a field interview, a client's voice memo — pick one of four presets and get back a conditioned file: rumble out, noise down, sibilance tamed, dead air trimmed and the loudness landed on -14, -16, -19 or -23 LUFS. It prints the loudness it measured going in and coming out, and spends no characters at all.

    This is not source separation: music under a voice comes back quieter, cleaner and still there. 50 MB and twenty minutes per run.

    Studio#
  • Languages honestly offered

    Choosing a language for a read now tells you whether it will actually be performed in that language. Where the running speech model would ignore the choice and hand back an English read of the words — billed in full, with nothing in the audio to say why — the option is switched off carrying its own reason, and the public text-to-speech endpoint refuses the same request rather than charging for it.

    Where nothing can confirm which model is loaded the picker warns instead of blocking, so render one take and listen before committing a batch.

    Studio#
  • Batches survive a closed tab

    Generate all runs on the server, so you can close the tab and come back to a finished project. A re-run renders only what changed: each finished block stores a fingerprint of its text, voice and settings, so fixing one paragraph re-renders that paragraph and nothing already correct is paid for twice.

    A run that reaches the end of the workspace's allowance stops there and resumes from the same block once there is more.

    Long-form#
  • Bulk Copy

    Forty dealer tags off one script: paste the spreadsheet, write the line once with {{column}} where the variables go, and get a take per row. A copy straight out of Excel works, since tabs, semicolons and pipes are read as readily as commas, and a voice column casts each row by name.

    500 rows to a batch; rows past that are reported back rather than quietly dropped.

    Long-form#
  • Scheduled traffic bulletins

    Highlight

    Draw a coverage area, pick a voice, set the dayparts, and traffic bulletins go to air with nobody in the building. Each run polls the live incident feed, writes the copy, renders it and hands it to your playout system, and the bulletin is stamped with the moment it was due rather than the moment it finished rendering.

    Every bulletin spends speech characters against the workspace, scheduled runs included.

    Broadcast#
  • Incident ranking, with receipts

    A metro feed returns thirty to a hundred live incidents and a bulletin has room for five. Name the roads your audience actually drives and they are lifted enough that a major hold-up on one leads over a severe one nobody in the market drives, and every published bulletin keeps the incident list and the scores it was ordered by.

    Roads are matched on the words you type, so an arterial has to be entered the way your audience says it.

    Broadcast#
  • Five ways out to playout

    A finished bulletin can be pulled from a stable URL, announced as a signed webhook, or pushed over FTP, SFTP or Dropbox, each target with its own filename pattern — one fixed name to overwrite for a watch folder, a timestamped one to build an archive. Every configured target gets a row on the bulletin, so a bulletin that aired and went nowhere is visible rather than silent.

    One bulletin is pushed at most three times per target — the recovery for a missed 07:20 is the 07:30, not a retry hours later.

    Broadcast#
  • Remote MCP server

    Point Claude, or any other MCP client, at your workspace with an API key and it can list voices, render speech, convert a recording, transcribe a file and manage clones. The tools are the published REST endpoints described from the same catalogue as the documentation, and the list a client sees is filtered to the scopes the key carries, so a read-only key reads as read-only in the host's own tool picker.

    The protocol has no confirmation step, so a destructive tool runs when it is called — withhold the scope rather than relying on a warning.

    API & agent#
  • Conversational agent

    Describe what you want and the agent drives the same API you could drive yourself, with your permissions and nobody else's. Reads and renders happen on their own; deleting, publishing or anything that changes how a voice sounds becomes a card someone has to confirm at their own role, and every tool call is recorded for the workspace to read, including the ones that were refused.

    Eight tool steps a turn, and a conversation may spend 20,000 characters or whatever the workspace has left, whichever is smaller.

    API & agent#
  • Cleanup stopped refusing files

    Audio Cleanup rejected every upload and told people to re-export the file, including files this product had just produced. The fault was in how it measured a recording's level rather than in anyone's audio, and when something genuinely does fail the message now names what failed instead of guessing.

    Fixes#

4 updates

  • Professional voice cloning

    Turn an instant clone into a fine-tuned one: the platform books a GPU, trains an adapter on that voice's own finished renders and attaches it when it lands. The panel shows how many of your renders qualify before you commit — it needs at least twenty, each still paired with the script that produced it — and you can close the tab, because the run carries on without you.

    Creator plan and up, three runs a billing period, one at a time. Training learns from render history rather than from the clips you uploaded, and a run that fails leaves the voice serving its instant clone.

    Voices#
  • Broadcast WAV delivery

    Every finished spot comes out as a 44.1 kHz stereo PCM WAV you can hand straight to a traffic department, with an optional delivery loudness of as-mixed, -14, -16 or -19 LUFS. The loudness stage is one measured gain, so it cannot ride the voice and the bed around the way an automatic pass does.

    The loudness trim only ever works downward; the master limiter already ships the mix hot.

    Broadcast#
  • Retry-safe renders

    Send an Idempotency-Key with a render and a retry stops being a second charge: the same key with the same payload hands back the first call's result and marks the response a replay. It covers speech, voice conversion, transcription and starting a dub, and a request that failed releases its key at once, because a failed render costs nothing and has to stay retryable.

    Keys are remembered for 24 hours, and changing the payload under the same key is a different request that renders and bills.

    API & agent#
  • Long recordings transcribe whole

    Anything past roughly four and a half minutes came back cut off mid-sentence, after the whole file had been processed and charged for in full. Transcripts now return complete with per-word timings, which fixes it in every place it was wrong: Speech to Text, the reading stage of a dub, "From an existing ad" in the Script Writer, and the public transcription endpoint.

    Word timings add a little decode time on a long file.

    Fixes#

18 updates

  • Text to speech studio

    Highlight

    Paste a script, pick a voice, and shape the read with four dials — Stability, Similarity, Style and Speed. Leave all four alone and you get the house sound the engine was tuned for; pin a seed and the same script comes back as exactly the same performance, take after take.

    10,000 characters per render, so a long script has to be split.

    Studio#
  • Performance pass

    Turns a written script into a spoken one — breath where a person breathes, a held beat before the payoff, spoken word order in place of written — at three depths from Subtle to Characterful. The prepared read is previewed with its marker count and character difference, and one button puts your original back.

    Silence and punctuation only: this engine performs no laugh or sigh tags, so any that get invented are stripped and listed rather than read out on air.

    Studio#
  • Workspace pronunciation dictionary

    Teach the workspace how to say the names it keeps getting wrong — sponsors, suburbs, hosts, call signs — and every render afterwards says them right. Matching is whole-word, so an entry for Vic never turns Victoria into Vickstoria, and you can hear a respelling before you save it: the same line rendered twice in one voice, as written and as respelled, pinned to the same seed.

    Respellings rather than phonetic symbols — you spell it the way it sounds, Decatur to Deekayder — and a render applies 500 words at a time, the ones added or asked for most recently.

    Studio#
  • Voice changer

    Record or upload a performance and hear it back in another voice. Your timing, phrasing, emphasis, pauses and breaths all survive and only the timbre changes, and the result sits beside the source so you can compare the two before keeping it.

    One speaker only — overlapping voices come out as one, and room reverb or music under the read is re-voiced along with the words. Conversion bills roughly 1,000 characters per minute of source audio.

    Studio#
  • Multi-voice from a script

    Paste a script and the speakers are picked out of it — NAME:, [NAME], (NAME) and standalone screenplay cues all parse — then give each character a voice and render the lot as one file, gaps and all. Fix one line of a twenty-line script and only that line is re-rendered: the rest are reused and the file is re-stitched around it.

    A colon label is only read as a character when the rest of the document supports it, so a lone "Note:" in prose stays in the narration.

    Studio#
  • Replace a word, keep the voice

    Retype a word in the transcript and it is re-synthesised in the clip's own voice and spliced into the original recording. It is rendered inside the words that surround it, so it arrives mid-phrase rather than as its own small sentence with a full stop on the end, then level-matched to its neighbours so the fixed word does not jump.

    Those surrounding words are billed too, so the button states the exact character count before you press it.

    Studio#
  • Licence-aware effects library

    Search freesound.org's Creative Commons recordings from inside the console, filter by licence, length or rating, and drop what you keep under, before or after any finished render. Every result carries its licence and a copy-ready credit line, so a non-commercial clap is flagged as unusable in a paid spot before you fall in love with it.

    What you keep is the site's mp3 preview rather than the master file, copied into your workspace so it survives the original being taken down.

    Studio#
  • Instant voice cloning

    Highlight

    Drop in a recording and the voice is ready to use straight away — there is no training step to wait for, and the upload returns as soon as the audio lands rather than holding open while a preview renders. Add up to ten clips at once, and every cloned voice gets a preview of the same fixed sentence, so the whole library is comparable like for like.

    The engine clones from one clip at render time, so it wants a clean single-speaker take with nothing underneath it. 50 MB a file.

    Voices#
  • Two hundred premade voices

    The library opens on the platform's own catalogue rather than an empty shelf: two hundred voices on a deliberate grid — sixteen accents, two genders, three age bands, with the delivery rotated so no two voices in the same bucket read alike — plus eight one-offs the grid would never produce, among them a late-night blues host and a hoarse sports commentator.

    Premade voices are read only: usable in every studio, but you cannot edit their samples, relabel them or fine-tune them.

    Voices#
  • The broadcast voice chain

    The Mixer runs the read through the chain a station would — rumble off below 75 Hz, chest lifted at 110, boxiness cut at 400, presence at 6 kHz, then a compressor and a limiter before the bus — and lands it in a slot from :10 to :120. An over-running read is time-compressed to fit exactly, or the spot extends and the bed runs under the whole read; nothing is cut either way.

    The EQ curve is fixed, and time compression only speeds an over-running read up — a short read is placed inside the slot, never slowed to fill it.

    Broadcast#
  • Long-form projects

    Highlight

    Paste or upload a manuscript and it arrives as a project: headings and horizontal rules become chapters, paragraphs become blocks, and a paragraph too long for one render is divided at a sentence boundary rather than cut short. Every block can carry its own voice, and one button joins every rendered block into a single MP3 in reading order.

    Import reads .txt and .md, and a project past 500 MB has to go out a chapter at a time.

    Long-form#
  • Copy cut to the slot

    The Script Writer writes to a slot rather than to a vague length: a :30 carries a 72–84 word budget, the model is held to it, and what comes back is measured again rather than taken on trust. The meter re-counts as you edit, and pause markers are lifted out of the word count and added back as seconds.

    A broadcast read lands between 2.4 and 2.8 words a second, so the figure is a band and says "about" — render the take for the real duration.

    Long-form#
  • Dubbing, line by line

    Move a recording into another language: the audio is read, split into lines, each line translated and re-read in the voice you picked, then joined into one master. Every line is listed with its source text, its translation, where it sits in the original and its own audio, and any single line can be re-rendered on its own.

    One voice reads the whole thing, the source has to be English, and the master is a sequential read — lines are not stretched to land on the original's timings.

    Long-form#
  • Speech to Text

    Drop in a recording — audio or video, up to 50 MB — and get text you can read, search and paste. Video is demuxed and only the audio track is read, and the upload is kept beside its transcript so you can check one against the other.

    One continuous block with no speaker labels, and recognition is English only — other languages come back as English-shaped nonsense rather than as an error.

    Long-form#
  • Public REST API

    Highlight

    Speech, voice conversion, transcription, voices and render history over a keyed REST API running the same engine the studio uses, with audio returned as bytes on the response rather than a job to poll; payloads are shaped so client code written against ElevenLabs ports with a change of base URL. Issue a key with only the scopes it needs, and the API Keys page lists the last forty calls with their status, how long each took and the characters each one billed.

    Text is capped at 10,000 characters a request and uploaded audio at 50 MB, and scopes are fixed when a key is issued — widening one means issuing a new key.

    API & agent#
  • Signed webhook deliveries

    Point a URL at your workspace and we post to it when a render finishes or fails, a transcript lands, a dub completes or a project finishes. Every delivery carries an HMAC-SHA256 signature over the timestamp and the body together, so a receiver can prove the message came from us and reject one captured and replayed days later.

    A receiver has eight seconds to answer.

    API & agent#
  • The metering ledger

    Every piece of work writes one row you can read back: which surface it came from, the voice, the seconds of audio, the engine time and the characters it cost. The rates sit above the table — a character of script costs a character, a minute of voice-changer source costs a thousand, transcription is a tenth of the synthesis rate — and a failed render is never billed.

    Fixed 7, 30 and 90-day windows, and no export yet.

    Platform#
  • Plan changes and failed cards

    Move up a plan mid-month and you are charged the difference only, scaled to the days left in the period, so you are never billed twice for the overlap. A declined renewal switches nothing off — the charge is retried after one day, then three, then five, and the workspace keeps its full allowance until a fourth attempt fails.

    A move down is not refunded; the higher allowance simply runs to the end of the period.

    Platform#