Changelog
What's new
Every release of every app, newest first.
0.4.0-beta.3Beta
Dubbing
- Importing a video from a link works again for YouTube videos offered only as separate video and audio streams (most of them now): AudioSmith gives yt-dlp the ffmpeg it uses (or one found on this Mac) to join them. Downloads stop at 1080p. Without any ffmpeg the error says to set it up in Settings → Audio tools, instead of "Requested format is not available".
- When a step fails, the dub shows why that step failed, not "A job it depends on failed".
Diagnostics
- Failed jobs (a dub step, a render, a transcription…) are written to the log, so Settings → Logs shows why.
Licence
- The app ships THIRD-PARTY-NOTICES.txt with the full licence texts of the 45 components it includes; Settings → Diagnostics and about → Third-party licences opens it.
0.4.0-beta.2Beta
Voices
- Hear a voice before you pick it: every voice list (Studio, Stories, Audiobook, Dub) has a ▶ on each voice, ■ to stop. Built-in speakers play a short sample that ships with the app, so they play before their model is downloaded; your own voices play the first seconds of their sample. One preview at a time; closing the list stops it. Keyboard: P plays the highlighted voice.
- Stories, Audiobook and Dub use the same voice picker as the Studio.
- Kokoro's Japanese voices are hidden, like its Chinese ones: our engine does not speak them intelligibly yet.
Licence
- AudioSmith is now licensed under the GNU Affero General Public License, version 3 (AGPL-3.0); earlier releases, up to and including 0.4.0-beta.1, remain under the Apache License 2.0. Settings → Diagnostics and about shows the licence and links to the source code; the Local API's
/,/healthand capabilities document carrysource_urlandlicense. The app ships LICENSE and NOTICE. - Contributions need the Contributor License Agreement (CLA.md): a bot asks you to sign it on your first pull request, by a comment. See CONTRIBUTING.md.
0.4.0-beta.1Beta
The first signed release is a beta (a GitHub prerelease): copies that receive beta updates get the next beta, and 0.4.0 once it is out.
Updates
- AudioSmith updates itself: once a day it reads the version file of its latest release on GitHub and, when a new version is out, shows its notes (this file's section of the version) and offers to install it, skip it or remind you later. Updates are signed; AudioSmith checks the signature before it installs one, and usually downloads only what changed. AudioSmith → Check for Updates…, the command palette and Settings → Diagnostics and about check at once; that page also turns the daily check and installing without asking on or off. Copies built on your own Mac don't update themselves.
- Releases are signed with a Developer ID and notarized by Apple, so they open without Gatekeeper's warning (docs/release.md).
- Beta updates: Settings → Diagnostics and about → Receive beta updates. Betas get new features sooner but may be less stable; turned off, AudioSmith only updates to releases. It is on in a beta copy (such as this one) and off in a release until you choose. Turning it off never goes back to an older version: a beta stays until a release newer than it is out. About shows a Beta badge next to a beta's version.
- MyGo 0.5.5: MyGo's own texts (text fields' menus, date pickers, dialogs) follow the app's language, and Chinese text is drawn with the Chinese forms of its characters.
Transcription with speakers
- New model "Transcription with speakers" (区分说话人转写; MOSS-Transcribe-Diarize 0.9B, 8-bit, 1.3 GB, Apache-2.0): it transcribes and tells who says what in one pass. Download it from the Models page, Transcribe or the Dub page; nothing downloads by itself.
- Transcribe: a Speakers option in the toolbar. Transcripts list their speakers (S1, S2…) with their lines; click one to name it. Copy and TXT export put one paragraph per turn after the speaker's name, SRT cues start with it, VTT marks voices, JSON has each segment's speaker. Dictation and plain transcription stay on Qwen3-ASR (MOSS is about 4× slower: a 10-minute recording takes about 4 minutes on a MacBook Air M4).
- Dubbing: with the model downloaded, a source with more than one speaker is transcribed by it and every line gets its speaker from it (in our tests 1.00 of the lines right on three of four 2–4 speaker dialogues and 0.93 on a 13-minute one with five people, where Qwen3-ASR + Sortformer managed 0.50–0.69 and never found more than 2 speakers; no limit of 4 speakers); the aligner still times the words, and the glossary's terms are its vocabulary. Without it, the dub works as before (Qwen3-ASR + Sortformer) and suggests the download, then Transcribe again.
- Long recordings go in 10-minute windows that overlap by a minute, linked by who speaks in the overlap; stretches without speech are skipped, and the model's chat answers to silence ("I'm sorry, I can't assist…") are dropped.
- Local API and MCP:
speakers=true,model=gpt-4o-transcribe-diarizeorresponse_format=diarized_json; segments carryspeaker. MCPtranscribetakesspeakers: true.
Fewer transcription and writing models; Qwen3-ASR transcribes everything
- Speech recognition is Qwen3-ASR 0.6B ("Chinese & English transcription") everywhere: dictation, Transcribe's Fast and Accurate modes, dubbing and its read-back check, workflows, Convert, clone references and calls. It made 0.5–4 % errors on Chinese where Whisper made 8–33 %, punctuates, and is 2–4× faster (thread #44's measurements). Whisper large-v3 turbo ("Multilingual transcription", tagged Fallback) is used on its own for the languages Qwen3-ASR does not know (it knows 30) and for translating speech into English. Fast and Accurate now differ only in the word timings.
- Long files: the vocabulary is only sent with recordings up to 30 s (Qwen3-ASR copied it into the end of longer transcripts); the " The." (or "嗯。") Qwen3-ASR sometimes invents after the last sentence of a long file is dropped; files longer than about 4½ minutes are timed word by word in windows of at most 4 minutes, cut between sentences (the aligner's times broke down after about 4½ minutes).
- Removed: Parakeet TDT 0.6B v3 (no Chinese) → Qwen3-ASR, or Whisper for a language Qwen3-ASR does not know; Mel-RoFormer (its output ended in 2–3.5 s of silence, and it was 5–9× slower) → HTDemucs; Gemma 4 E4B, Gemma 4 E2B and Qwen3 1.7B (slower or broken JSON, weaker translations and clean-up) → Qwen3 4B Instruct 2507, now the only language model, named in Settings → Writing help instead of a choice. Settings that named a removed model go back to the default once, with a notice; a model you chose that is still there (Whisper) stays. API and MCP: a transcription that names Parakeet is answered by its replacement with
replaced_byand a warning (X-AudioSmith-Replaced-By/X-AudioSmith-Warning);GET /api/models/{id}describes the removed models, and they are not listed. Their files stay until Models → Clean up, which now also lists them (and shows on their tab). - Onboarding: Balanced no longer downloads Whisper; Max adds it instead of Mel-RoFormer.
Models named for what they do
- Every model has a plain name that says what it is for — Standard voices, High-fidelity clone, Fast clone, Voice design, Fast English voices, English clone, Multilingual all-rounder; Chinese & English transcription, Writing assistant · Standard… (标准音色、高保真克隆、快速克隆…) — a one-line description and a few tags (Chinese, Cloning, Built-in voices, Low memory, Non-commercial…). Pickers, the Models page, ⌘E, Settings, the bar beside Generate, History, onboarding, notifications and messages use them.
- The family, version, size, quantisation, repository and licence are still there: in a model card's Details on the Models page, in the pickers' tooltip and ⓘ, and in History's details (Technical name). Ids, repos and saved projects don't change.
- The model picker and the Models page have a search field that finds a model by its name, its technical name, id, repo or a tag.
- Local API and MCP: model lists add
display_name(English),ui_name(as the app shows it),descriptionandtags; a friendly name picks a model too.
Portable voices, and simpler Design, Clone and Export
- Make a portable copy of a model's built-in speaker or of a designed voice (My voices → ⋯, the Studio's voice list, or Make portable where a voice can't be used): its model says a ten-second line, evened out, and the take is saved as a cloned voice "<name> (approximate)" that every model that clones can speak with. It sounds close to the original, not the same, and says so.
- When a voice can't be used with a model, the message says why and what to do (make a portable copy, or pick a model that designs).
- Design shows only what the model can't express; what it will hear is behind ⓘ, and the seed moved into Details. Clone: style and language are under Advanced. Export audio: format, loudness, file name and extras in view; bit depth or bitrate, sample rate, channels and trimming under Advanced.
Simpler Stories, Audiobook and Dub
- Stories and Audiobook: the inspector keeps Setup, Cast, Performance (Stories) or Chapters and Cover & details (Audiobook), and one Advanced section for the rest — language, merging and evening out voices, refinement and guidance, gaps, trimming, seed, a stem per character, a story's M4B with its cover and details, an audiobook's own pronunciations — with N changes and Restore recommended (your pacing stays).
- The Project section moved to a Project ▾ menu in the header: Save (under the title — the title is the project's name), Save a copy, New, recent projects, All projects…
- A story shows only what its model hears: personas, the scene, the AI director and line directions disappear on models that say lines as written, and a line's speed on models without one.
- Dub: each step keeps its main choices; the rest folds into Advanced at the foot of the step (speakers and review, more languages and the translator's options, voice match, the voice model's parameters, a WAV's bit depth). The buttons the editor's ⋯ menu already had left the panels; Transcribe again… and Translate everything again joined that menu.
A simpler Studio
- The inspector shows what most takes need: the model, one Voice list (the model's speakers, your saved voices, a clip to clone, Manage voices…) and the speed. Everything else — style, reference transcript, length, refinement, guidance, sampling, seed, reading numbers, evening out the volume — is under Advanced, filled with the model's recommended settings; its header says "Recommended settings" or how many you changed, with Restore recommended inside. Advanced stays open or closed as you left it.
- The Voice controls and Audio quality buttons are gone, and so are the WAV precision (takes are kept at 24-bit; choose the file's bit depth in Export audio), Preload / Unload (in the ⌘E engine switcher, now with Unload), the autoplay switch (Settings → Studio) and the steps slider (three tiers remain).
- A clip chosen to clone is transcribed for you when it is a WAV.
- The bar beside Generate says which model and voice will speak, and how many settings you changed; a click shows the inspector.
Recommended models and settings
- Every speech model was measured on a MacBook Air (intelligibility with two recognisers, naturalness, voice stability, speed, memory). Each page now recommends two or three models for its job and your language, with a one-line "best for" and a speed and quality hint; the others are one click away under "Show all models", and the ones that can't do the job (no cloning for a dub) are greyed out with the reason.
- Tuned defaults: Qwen3-TTS uses temperature 0.7 and top-p 0.8 unless you (or an API request) set them — the models' own 0.9 / 1.0 sounded worse and less stable; OmniVoice uses guidance 1.5 with 32 steps (16 for dubbing). The Local API and MCP tools follow the same defaults. Rendered chunks from before are made again once with the new settings.
- Removed: six speech models that misread, paused or covered too little in the tests — KittenTTS mini, MOSS-TTS-Nano, Chatterbox (multilingual), Marvis, Soprano and Pocket TTS. Seven remain: Qwen3-TTS 0.6B CustomVoice, 0.6B Base, 1.7B Base and 1.7B VoiceDesign, Kokoro, Chatterbox Turbo and OmniVoice (under Show all models). Drafts, projects, dubs, workflows, settings, history and API or MCP calls that name a removed model use its replacement — Kokoro, Qwen3-TTS 0.6B Base for MOSS-TTS-Nano, Chatterbox Turbo for Chatterbox and for cloning with Marvis, Soprano or Pocket TTS — and the app says so once; the API answers with
replaced_byand a warning. A removed model's own speakers saved in My voices can't be used any more. - Models → "Removed models still take X GB": Clean up deletes their files (after listing them); nothing is deleted on its own.
- Chatterbox's expressiveness control is gone with the multilingual model (Turbo does not take it).
- New dubs fit lines with "Smart fit" instead of "Lip sync": lip sync sped most Chinese lines up audibly (1.2–1.4×). Dubs you already made keep their timing.
- Kokoro's six Chinese voices are hidden (unintelligible in the tests); its English voices are the best English default.
Stories: dialogue that flows
- Turn-aware pacing: the silence between lines follows the conversation — shorter when a character goes on or answers a question, a little longer after a statement, shortest when a line is cut off (… —), longer around narration. Three presets (Dialogue, Reading, Relaxed) in the new Performance section; new stories use Dialogue, stories made before keep their fixed gap until you pick a preset. A line's own "pause after" still wins.
- Consecutive lines of one character are said in one go, so the voice flows from one sentence into the next, then split back into lines at their pauses (player, stems and the sidecar see lines as before; a turn that cannot be split is made line by line). The pause inside a turn is kept close to the preset's.
- Each character's lines are brought toward one loudness (measured 4–7 LU apart on Qwen3-TTS before, about 1 after).
- A scene for the story, a persona for each character and a direction (with an intensity) for each line. Qwen3-TTS CustomVoice and VoiceDesign hear them as an instruction with every line; other models say lines as written, and the page says so ("Line by line"). Never spoken.
- AI director: the writing-help language model (Qwen3 4B on this Mac by default) reads the story and fills in the scene, personas and directions; edit any of them, Undo, or direct again.
- Imported scripts keep stage directions out of the spoken text:
妈妈(温柔地):…,MOM (softly): …,[Mia] (pleading) …become the line's direction. - Agents:
update_longformsets a story's scene, personas, directions, intensities and pacing, anddirect: fill | allruns the AI director;get_longformshows them with the model's continuity level. - The catalogue marks Qwen3-TTS CustomVoice and VoiceDesign as taking instructions, as the engine reports them; dubs and stories ask one predicate.
Export audio
- History's takes have an Export button (and Export… in ⋯); the Studio's latest take, a take's details and Projects open the same Export audio dialog, which replaces the Save as… menu.
- Choose the format (WAV; M4A through the engine; MP3, FLAC and Opus with ffmpeg, greyed out with a pointer to Settings → Audio tools without it), the bit depth or bitrate, the sample rate and the channels; bring the file to −16, −18 or −23 LUFS with a true-peak ceiling; trim the silence at both ends; name the file and its title and artist tags; save the script and subtitles beside it. The dialog shows the size and length before you export, and remembers your choices for each kind of take (Studio, voice preview, converted recording, Local API).
Writing help no longer fails during a render
- The language model on this Mac now waits for its turn when a render, dub or batch is using the engine, instead of failing with "the engine is busy": writing help, the AI director, dub translation, transcript clean-up, the direction coach, phone calls and API/MCP requests go next, ahead of queued batch work (a running job is never interrupted). These short requests don't appear in the jobs list. Their time limits count from when the model starts.
- Dictation never waits for a render: while one runs, it types the polished text at once without the model's clean-up. The Tools direction coach shows 「等待当前任务完成…」 (Waiting for the current job to finish…) and, if the job is still running after 30 s, reads the note by keywords.