Skip to content

Audio & voices

Aquilla has audio built in, both listening (text-to-speech) and recording with transcription (speech recognition). For audio, video, and subtitle files, see also Media view & timing for lining your recordings up against the original on the timeline.

Transcription uses Aquilla hosted transcription by default, which needs a connection. If you switch to local Whisper (see Recording), transcription runs in your browser. Aquilla also includes in-browser voice models that download once and cache locally, so after the first use you can listen and, with local Whisper, transcribe even offline, a real advantage in low-connectivity settings. Some higher-quality voices use a server instead; those need a connection.

You can have any cell read aloud. Switch the editor to its Audio tab and each translated cell grows a voice control; the Voices tab in the sidebar holds your project’s cast.

The workspace in the Audio tab: the sidebar lists the project's voices; a line with audio shows its waveform, and a line without audio shows a Generate button naming its voice beside a Record button
The Audio view. Translated cells are ready to voice; untranslated ones ask for text first.
  • Your project keeps a cast of voices. Each voice is backed by a text-to-speech engine, your choice of:
    • Inworld (recommended): hosted Inworld TTS 2 and Flash, no setup and no API key, with named stock voices in many languages and a Voice design mode for building a voice from scratch (see Designing a voice below).
    • Gemini: the highest-quality, promptable voices in many languages. It runs on Google’s servers, so it needs your own Google AI key (added in Project Settings).
    • MMS: a free, on-device voice model covering many languages, with no key and no connection once it has downloaded. One model per language, so it may affect performance.
  • Assign a voice to a cell (or to a character whose lines share a voice), then play a single cell with one click, or queue several cells into a playback queue (the player bar along the bottom) to hear how a passage flows in the target language. Only one thing plays at a time: starting a recording, a preview, or the timeline stops whatever else was playing.

On a project with more than one target language, each language keeps its own voices. A voice belongs to the language it was made in, and the Voices list, the voice pickers and Generate show only the voices of the language you have open. Each language also keeps its own cast (which line or character uses which voice) and its own starred default voice, so recasting a line in one language leaves the others alone. Voices made before languages had their own, and the built-in Narrator, show on every language. If you can’t open a language, you don’t see its voices either.

A Maintainer can always create, edit, star and assign voices. A Project lead can too once a Maintainer turns on Project leads can manage voices in Project Settings → Voice, and then only on the languages they can write. Contributors and Viewers can’t manage voices.

On the Audio view, a line with no audio yet shows Generate · {voice} (naming the line’s voice) and Record. Picking a voice only assigns it to the line; nothing is generated until you click Generate. A line that has audio shows its waveform, with two draggable lines on it to trim the clip. If the take was made with a different voice than the one the line has now, a pill reads “This take was voiced by {takeVoice}. The line’s voice is now {lineVoice}.”

The Audio view has one player, the bar along the bottom. A line’s play button, its ⋯ menu’s Play audio, and the bar all drive it, and playback runs on into the next lines. The part of a line already played is shaded, and the shading stays where you paused. Click along a line’s waveform to move the place there. Selecting a line sends the next Play to its start.

A take is drawn in the color of its track, the same color it has on the timeline. A Maintainer can change it from the Audio view: a small colored dot beside the Controls heading opens an Audio color menu of six swatches. The choice is stored once for the file, so the timeline and the Audio view always agree and everyone on the project sees it.

To give several lines a take each in one go, select them in the Audio view and choose Generate voice in the selection bar. Pick the Voice to use, and for lines that already have generated audio, choose Leave them as they are or Generate them again (a new take that plays instead, with the earlier take kept in the line’s history). The dialog estimates the words and credits before you start. Progress shows in the usual banner with Cancel, and any line that fails is named. At least one selected line must be translated.

To voice several lines as one clip, select at least two translated lines in the Audio view and choose Voice together in the selection bar (it reads “Voice {count} lines as one clip” on hover). When the clip is ready, a Split the combined clip by line window shows its waveform with one divider between each pair of lines. Drag a divider (or nudge it with the arrow keys) so each one sits at the end of its line, click a segment to hear just that line, and choose Save splits. The split starts as an even division by text length.

The new-voice dialog with TTS voice and Clone voice tabs, a name field, three engine choices (Inworld recommended, Gemini, MMS), and Prebuilt voice / Voice design sub-tabs with Language and Accent pickers
Adding a voice to the cast: pick an engine. Inworld needs no key or setup.

When you pick Inworld, a Prebuilt voice / Voice design pair of tabs appears. Prebuilt voice lists Inworld’s stock speakers for languages it has them for; if your target language isn’t one of them, a hint points you to “the Voice design tab to design one yourself.”

Voice design builds a voice from a text description instead of picking a stock speaker, in one of two modes:

  • Freeform: describe the voice in a sentence or two (“Write in English. Include age, gender, accent, pitch, pace, and tone…”).
  • Structured: a labeled profile (dialect, gender, age, emotion, tone, pitch, volume, speed, clarity, fluency, personality, texture, environment) you fill in field by field, with a reset button if you want to start over.

Either mode starts from a preset chip, Agent, Narrator, Instructor, or Pirate, that fills in a starting description you can then edit. Write a short preview script, click Generate previews, and Aquilla renders three preview clips; play each and pick the one that fits before saving the voice.

Both Prebuilt and Voice design offer the same two knobs: Audio quality (Standard or Highest, cloud rendering with more headroom) and Delivery (More Stable, Balanced, or More Creative, only adjustable at Highest quality), plus a Talking speed slider. On the Voice design tab these knobs don’t affect the three previews you’re comparing, only the voice as saved; a hint under the sliders says so.

A voiced line in the Audio view: a green waveform with a play button and elapsed time, with a trim handle at each end, and below it the line's voice selector beside record, volume and copy buttons
A voiced line: waveform and play button, trim handles at both ends, and the line's voice below.

The first time you use an in-browser voice, Aquilla downloads its model and caches it; after that, playback works offline.

Offline, a voice from a hosted engine can’t generate: its Generate button is disabled, and the tooltip reads “Offline: {engine} needs a connection to generate audio.” If the on-device MMS model has downloaded, the tooltip offers it instead, and an MMS voice still plays as a preview offline. The tooltip then reads “Offline: preview with the on-device voice. The clip won’t be saved.” The batch Generate voice dialog shows “You’re offline. Generating voice for these lines needs a connection.”

Every cell’s audio also lives in its detail panel’s Recording tab. The tab shows the take that plays, with a scrubber, and a New take button (tooltip: “Open the recorder to record, upload or generate a take”). Below sits a list of the line’s other takes, headed “{count} other take” or “{count} other takes”. A line with no take shows “No take yet”, or “No take plays for this line. Use one below, or make a new one.” when it has takes but none is chosen. From the list you pick the take to use, rename it (Rename take) or delete it, clean one up with Remove noise (adds a cleaned take), or Revert to the original recording. Each take also carries a compact “date · name” tag showing when it was made and by whom; hover it for the exact time, and it reads “Recorded” or “Generated” depending on whether a person or Aquilla’s voice engine made it.

Each recorded take also shows a verdict that compares its transcript with the line’s text:

  • Matches the text
  • {count} word differs or {count} words differ
  • Transcript out of date: the text changed after the transcript was made
  • Not transcribed: the take has no transcript yet
  • Transcribed: a transcript exists
  • No text to compare: the line has no text yet

Generated takes get no verdict. If a take was recorded before the line’s wording last changed, it carries a Text changed badge, unless its transcript matches the line as it reads now. Hover the badge to see when it was recorded and what the text read at the time. This is a heads-up, not an error: re-record to match the new wording, or keep the take if you’re intentionally reviewing the older one.

The waveform in the Recording tab, the Audio view, and the recorder is one shared waveform, so a trim you make in one place shows in the others.

Reviewers can validate a take right from this strip, the same way they validate translated text.

A cell's detail panel open on the Recording tab: a Take row with its length, date and author, a New take button, and the take's waveform with a play button
The Recording tab: the take this cell plays, who made it, and a New take button to make another.

You can also record audio and have Aquilla transcribe it:

  • Choose Record audio on a cell and a guided prompter opens, showing the text to read aloud. Press Space or click Start: a beep and a 3-2-1 countdown lead into recording (Aquilla asks for mic permission first, with a clear explanation of why). The recorder’s settings (the gear icon) offer four Countdown speeds: Off, Fast (“3-2-1, half a second each”), Normal (“3-2-1, one second each”), and Slow (“3-2-1, a second and a half each”). Normal is the default. Choose Off if you’re recording several short takes in a row and don’t need the cue: recording starts straight away, and the separate Countdown beep control is disabled (“No countdown to beep”) since there’s no countdown left to beep. The other settings (Countdown beep, Move on after saving a recording, Keep the takes drawer open) are on/off switches; hover a row to read what it does in its current state.
  • On a line that has a picture, the film sits beside the recorder and plays along with your take and with the preview. It starts muted: the microphone records with echo cancellation off, so on speakers an unmuted film is recorded into your take. Unmute it only on headphones. A take you are recording, and the preview after it, are drawn in the color of the recording track.
The recorder's settings popover over the Record audio prompter: a Countdown control with Off, Fast, Normal (selected) and Slow, then switches for Countdown beep, Move on after saving a recording, and Keep the takes drawer open
Recorder settings: pick a countdown speed, and decide whether the recorder moves on or keeps the takes drawer open.
  • The source text stays pinned at the top of the recorder while you record, so you can keep reading it as the take runs.

  • If your browser has blocked microphone access, the record button shows “Microphone access blocked — click for help”: click it for steps to re-allow the microphone in your browser’s site settings, then reload the page.

  • Transcription uses Aquilla hosted (recommended) by default: it is ready immediately, needs no key or download, and uses your workspace’s AI capacity. If the workspace has used up its capacity, you are told to try after the reset, update the plan, or switch to local Whisper. In Preferences → Local models → Transcription you can instead choose Local Whisper in this browser, which runs on your device without using hosted capacity (speed depends on the device). The choice applies to your account in this browser.

  • Under the hosted option, Hosted model picks which model transcribes:

    • Automatic (the default): “Picks the model that knows the project’s language: Qwen3-ASR for Chinese, Whisper, then Omnilingual.”
    • Whisper: strong in widely spoken languages.
    • Qwen3-ASR: strong in Chinese and its dialects.
    • Omnilingual: Meta’s model for more than 1,600 languages.
    • Omnilingual Zero-Shot: learns your language from the project’s own recorded and transcribed takes. It is slower and uses more credits, and it needs at least one recorded and transcribed line in the language. Its first use can take a few minutes while the model starts.

    Whisper, Qwen3-ASR and Omnilingual each have a See all {count} languages link that lists every language the model knows. An organization can turn off Allow zero-shot transcription under its AI provider keys settings, and then Zero-Shot is not offered.

The Transcription section of Preferences, Local models: Aquilla hosted (recommended) is selected, and under it the Hosted model list with Automatic selected, then Whisper (See all 98 languages), Qwen3-ASR (See all 30 languages), Omnilingual (See all 1672 languages) and Omnilingual Zero-Shot, each with its description; Local Whisper in this browser is the second option below
The model list sits under the hosted option; Automatic is the default.
  • The first time you choose local Whisper, a prompt offers the model download and says: “After you save a recording, this device transcribes it automatically.” On a device with no usable graphics card, local Whisper falls back to a slower mode that runs on the processor, rather than showing Failed under Preferences → Local models. Expect longer waits there, not an error.
  • With local Whisper, an in-browser speech-recognition model transcribes what you said. This works on a take you’ve only just recorded, too, even offline or before it has synced to the server, so you can record and transcribe in one sitting without waiting for an upload.
  • When you transcribe many recordings at once, Aquilla can reach the hosted service’s request limit. The progress banner then reads “Transcription limit reached, continuing at {time}”, and the batch carries on by itself. You don’t need to do anything.
  • While it works, a small status badge next to the Transcribe button keeps you posted: a download percentage the first time the model fetches, a transcribing pill while it runs, and a word count when it lands. If something goes wrong you’ll see Transcription failed: click it for the details, with Retry and Dismiss right there. If the hosted model itself isn’t answering, the details read “The transcription model isn’t responding”, and a Change model button opens Preferences → Local models so you can pick another model or transcribe on this device.
  • After you record, the waveform shows two trim lines. Drag them to keep only part of the take before you save: a readout shows “{start} – {end} · {length}”, the hint reads “Space plays · drag a line to trim”, and the handles are labelled “Start of the kept audio” and “End of the kept audio”. Reset trim restores the full take. Press Space to hear the take you just recorded (the kept part), and Enter or the Save button (marked “· ENTER”) to keep it. The saved take plays only the kept part, and a take you trimmed is exported the same way, even on a line with no timing. The recorder’s takes drawer lists your takes under the waveform: turn on Keep the takes drawer open to leave it showing, or use Show all takes to bring up the whole list.
  • Review the transcript and, if it’s good, accept it into the cell, which queues it as a normal edit. If you fix a mistake instead, Aquilla remembers that correction for the rest of the project, so the same word doesn’t come back wrong the next time you record.
  • Prev / Next in the prompter step through the file cell by cell, so you can record a whole passage in one sitting, and you can transcribe several recordings at once when you have a batch.
  • You can also upload an existing audio file as a take instead of recording one live. Uploading opens the Takes list so you can see and play the new take right away, on the same line: it never jumps you to the next cell, even if the recorder’s Move on after saving a recording setting does that for a live take you just finished.

Playing back a recording streams: long takes start playing almost immediately and you can jump around within them instantly, instead of waiting for the whole file to download first. Two limits to know about: a recording made in the app can be at most 95 MB, and the recorder stops a take before it gets there. Audio and video files you import can be up to 2 GB; large files upload in parts, so a dropped connection resumes the upload instead of starting over.

The Record audio prompter for cell 6 of 14, with arrows to step between cells, the source text and the line to read aloud, a Record · SPACE button, Generate and Upload buttons, and an empty Takes list
The recording prompter: it shows what to read, counts you in, and steps to the next cell when you're done.

Change voice keeps a take’s words and timing and makes it sound like the line’s assigned cloned voice. Nothing is generated from text. On the Audio tab, a line that has a take shows a Change voice icon on its voice card. It opens a small popover with a Change voice button and a Quality menu: Fast, Standard, or High (“How closely the converted take matches the voice. Higher takes longer.”). The original take stays, and the new one is selected in the same slot. A stock voice with no reference clip can’t be used: the icon stays grey and says “{name} has no reference clip. Assign a cloned voice to change this take.”

To convert a whole file, the file’s ⋯ menu has Change voice of existing audio. It converts every line to its assigned voice at the quality you pick. Takes already made from the voice’s current reference clip at that quality are left alone, and so is a take a voice was cloned from. The progress banner reads “Changing voices”; when it ends, a message says how many takes changed (“Changed the voice of {count} takes”) and how many cells were skipped or failed, with the reason. On the timeline, the same action sits in a take’s right-click menu: see Media view & timing.

Beyond the ready-made library, you can give a voice the timbre of a specific person. When you set up a voice for a character, add a reference recording three ways: record a short segment, upload an audio clip, or pick From a line, reusing a take already recorded or generated somewhere in the project. Aquilla re-voices that voice’s text-to-speech output into the reference’s timbre. A voice with a reference attached is marked Clone; leave the reference empty to use the base voice as-is.

The new-voice dialog on its Clone voice tab: a Reference audio / From a line switch, and an Add a reference clip box with Record reference and Upload audio buttons
Clone voice: record or upload a reference clip, or switch to From a line to reuse a take from the project.