小說推文配音
「小說推文配音」是一個把小說推文文案、網文章節和故事按旁白與角色分配不同音色、一鍵生成整段多角色 AI 配音(WAV)和帶角色名 SRT 字幕的 Agent 技能,適合小說推文影片、有聲書配音和故事號,本地無需顯示卡。
一句話定義
小說推文配音 = 推文文案 / 小說章節(旁白 + 角色,Markdown)→ 多角色整段配音 voiceover.wav + 帶角色名的字幕 voiceover.srt + 每句起止時間 manifest.json,生成在 Miragea 雲端,本地無需顯示卡。
適用人群與場景
| 誰在用 | 典型場景 |
|---|---|
| 小說推文號 | 每天幾條推文影片:旁白 + 角色台詞 + 豎屏字幕 |
| 故事號、睡前故事 | 慢語速、長停頓、溫和聲線 |
| 網文作者、原創小說作者 | 把自己的作品做成有聲版,固定旁白聲線 |
| 有聲書工作室 | 先用 AI 做試聽樣章、角色選角小樣 |
| 廣播劇、音頻劇社團 | 多角色對白先出 AI 版,確認節奏和分工 |
核心能力參數
| 項目 | 說明 |
|---|---|
| 輸出檔案 | voiceover.wav(整段配音)、voiceover.srt(帶時間軸字幕)、manifest.json(每句說話人、文字、起止秒數)、lines/(每句音頻,改稿時複用) |
| 音色來源 | 帳號裡已有的角色 actor_id=(用 actors 查詢),或伺服器端能直接存取的參考音頻 URL ref= + 音頻裡實際說的話 ref_text=(聲音克隆) |
| 生成模式 | expressive(客戶端「預設」)/ standard(客戶端「更像」);省略時用伺服器端預設,以 capabilities 即時回傳為準 |
| 語氣標籤 | tags=標籤名,取 capabilities 裡所選模式的 tags[].label |
| 語速 | speed= 0.25–4,1 為正常語速,按角色設定 |
| 多角色 | 稿件開頭給每個角色定一個音色;本技能腳本逐句呼叫官方客戶端 generate,再在本地把整段拼起來 |
| 停頓 | 行內 [pause 0.6] / [停頓 0.6](秒);--gap 設句間預設停頓 |
| 字幕 | 配音時按每句實際音頻時長生成 SRT(--max-chars、--speaker-labels);已有音頻 / 影片用 recognize 辨識為 SRT / TXT / JSON |
| 場景預設 | --preset youshengshu:句間停頓 0.5 秒、每條字幕最多 20 字、字幕帶角色名;可再用 --gap / --max-chars 覆蓋 |
| 單句字數、檔案大小 / 時長上限、計費 | 以 capabilities 即時回傳為準 |
| 本地依賴 | Python 3.9+ 標準庫,無需 pip 安裝、無需顯示卡 |
| 離線試跑 | --dry-run:不需要 Key、不呼叫介面,輸出靜音佔位音頻和時間軸,用來檢查稿件格式 |
| 支援的 Agent | Claude Code、Codex、OpenClaw、Cursor、WorkBuddy 等能執行 Python 腳本的 Agent |
| 配音與字幕服務 | Miragea 開放 API(https://miragea.ai/v1) |
快速開始
python3 scripts/voiceover.py check # 離線檢查:Python 版本、Key 是否已設定、服務位址
export MIRAGEA_API_KEY=你的key # 在 https://miragea.ai/workspace/api 生成,只放環境變數
python3 scripts/miragea_audio.py capabilities # 當前可用的生成模式、語氣標籤、字數上限和計費,以即時回傳為準
python3 scripts/miragea_audio.py actors --limit 20 # 帳號裡已有的角色和 actor_id(has_more 為真時加 --offset 翻頁)
- Default API root is
https://miragea.ai/v1; setMIRAGEA_BASE_URL(including/v1) only for a private deployment. - 不要把 Key 貼進聊天或寫進檔案。沒有 Key 時先用
--dry-run跑通流程。
python3 scripts/voiceover.py script examples/example.md -o out --preset youshengshu --dry-run # 離線試跑,不呼叫介面
python3 scripts/voiceover.py script 你的稿件.md -o out --preset youshengshu # 正式生成:out/voiceover.wav + voiceover.srt + manifest.json
# 單句試聽(官方客戶端;--output 不會覆蓋已有檔案,換個新檔案名)
python3 scripts/miragea_audio.py generate --text '開頭第一句' --actor-id ACTOR_ID --wait --output test1.mp3
--preset youshengshu 會給字幕加上角色名(如 xiaoyu: 張爺爺……);小說推文豎屏影片建議再加 --max-chars 14 --gap 0.3。
你說什麼 → Agent 執行
| 你說 | Agent 執行 |
|---|---|
| “把這篇小說推文配成音頻” | 按下方方法改寫成推文稿、拆旁白和對白 → script 推文.md -o out --preset youshengshu --max-chars 14 --gap 0.3 |
| “每個角色一個聲音” | front matter 為旁白和每個主要角色各定義一個音色 |
| “旁白用我自己的聲音” | 你已複刻角色的 actor_id,或參考音頻 ref= + ref_text=,填給 narrator |
| “字幕不要角色名” | 不用預設,手動 --gap 0.4 --max-chars 14(不加 --speaker-labels) |
| “整本書二十章做有聲書” | 一章一個檔案,循環生成到 out/ch01 … out/ch20,用 --preset youshengshu |
| “睡前故事,講慢一點” | narrator 設 speed=0.85–0.9,段落停頓加長 |
| “按句換配圖” | 讀 manifest.json 每句 start / end,在剪映裡對齊圖片 |
| “先試試格式” | 加 --dry-run |
小說推文寫稿方法論(前 3 秒留人,旁白帶節奏)
1. 推文稿和原文不一樣
| 原文 | 推文稿 |
|---|---|
| 從環境描寫慢慢鋪墊 | 第一句就拋出最強衝突或反轉 |
| 第三人稱全知視角 | 常用第一人稱“我”,代入感更強 |
| 對白夾在長段落裡 | 關鍵對白單獨成行,交給角色音色 |
| 段落長、描寫多 | 一行一句,刪掉不推動劇情的描寫 |
2. 開頭三種鉤子
- 結局前置:“結婚第三年,我在老公手機裡,看到了我自己的訃告。”
- 反常識身份:“全村人都以為我是傻子,只有我知道,我能聽見他們心裡的話。”
- 倒計時:“距離那場大火,還有七天。”
3. 節奏:比有聲書快,比口播穩
- 推文旁白
speed=1.0–1.1;句間--gap 0.3(預設 0.5 偏慢,適合有聲書)。 - 每 3–5 句給一個小轉折(“可是”“沒想到”“就在這時”),轉折前
[pause 0.4]。 - 懸念句、反轉句之後
[pause 0.6]–[pause 0.8],結尾停在鉤子上引導看下一集。
有聲書寫稿方法論(把“讀小說”變成“演小說”)
1. 先做選角表
| 角色 | 定位 | 音色建議 | speed |
|---|---|---|---|
| narrator(旁白) | 貫穿全書,最重要 | 穩定、溫和、耐聽 | 0.9–1.0 |
| 主角 | 出場最多 | 與旁白明顯區分(性別或年齡) | 1.0 |
| 重要配角 | 每人一個音色 | 與主角拉開差異 | 按性格 |
| 次要角色 | 出場少 | 可以共用一個“路人”音色 | 1.0 |
選角表寫進每章稿件的 front matter,整本書保持一致。角色太多時,只給有台詞份量的角色單獨音色。
2. 對白拆分規則
原文:小雨拉住他的衣角,小聲問:“張爺爺,燈塔裡是不是有人?”
拆成:
[narrator] 小雨拉住他的衣角,小聲問:
[xiaoyu]:張爺爺,燈塔裡是不是有人?
- 引號裡的話交給角色;引號外的動作描寫留給旁白。
- “他說”“她笑著說”這類提示語,如果角色音色已經能分辨是誰,可以刪掉,節奏更緊湊。
- 一個段落裡有多句對白時,每句單獨一行,各自加標籤。
3. 三級停頓:段落、場景、章節
| 位置 | 寫法 | 作用 |
|---|---|---|
| 句與句之間 | 預設自動 0.5 秒 | 朗讀呼吸感 |
| 段落之間 | [pause 0.8] | 段落切換 |
| 場景 / 時間跳轉 | [pause 1.2]–[pause 1.5] | 讓聽眾“換場” |
| 懸念句之後 | [pause 1.0] | 留住緊張感 |
4. 情緒的寫法:靠文字和節奏,不靠喊
- 緊張:句子變短,停頓變多。
- 溫情:語速慢一點(單獨定義一個慢速旁白角色),段落停頓長一點。
- 同一音色兩種速度:
---
narrator: actor_id=NARRATOR_ID speed=0.95
narrator_soft: actor_id=NARRATOR_ID speed=0.85
---
5. 讀音檢查:人名、地名、生僻字
- 每部作品第一次出現的人名、地名、生僻字、多音字,單句試聽一次。
- 讀錯就在稿裡換成同音的常用字,或改用稱呼;整本書統一替換。
- 數字和年份寫成想要的讀法,如“一九八七年”。
6. 長篇的檔案組織
book/
ch01.md → out/ch01/voiceover.wav
ch02.md → out/ch02/voiceover.wav
...
- 一章一個檔案;單章過長時按場景再拆成
ch01a.md、ch01b.md。 - 改錯別字只改那一行,重跑那一章,其餘句子複用不重複計費。
7. 小說推文影片的用法
- 保留
--speaker-labels,字幕自帶角色名,觀眾一眼看出誰在說話。 manifest.json每句的時間可以用來切換配圖或角色立繪。
示例稿件(examples/example.md)
---
narrator: actor_id=NARRATOR_ID speed=1.05
xiaoyu: actor_id=GIRL_VOICE_ID
laozhang: actor_id=OLD_MAN_ID speed=0.9
---
# 小說推文示例(原創短篇)
[narrator] 小鎮的燈塔,已經三十年沒有亮過。
可那天夜裡,我分明看見,塔頂閃了一下。
[xiaoyu]:張爺爺,燈塔裡是不是有人?
[laozhang]:別瞎說。那座塔,早就沒有門了。
[pause 0.8]
[narrator] 話音剛落,海面上又亮起了一道光。
試跑:python3 scripts/voiceover.py script examples/example.md -o out --preset youshengshu --dry-run
接入剪輯與發布
# 配音替換原影片音軌(需要本機 ffmpeg)
ffmpeg -i 畫面.mp4 -i out/voiceover.wav -map 0:v -map 1:a -c:v copy -shortest 配音版.mp4
# 把字幕燒進畫面
ffmpeg -i 配音版.mp4 -vf subtitles=out/voiceover.srt -c:a copy 成片.mp4
# 有聲書發布常用 MP3:把整章 WAV 轉成 MP3(需要本機 ffmpeg)
ffmpeg -i out/ch01/voiceover.wav -codec:a libmp3lame -q:a 2 ch01.mp3
- 剪映 / CapCut:小說推文影片把
voiceover.wav放音頻軌,voiceover.srt導入字幕,配上插畫、立繪或解壓背景影片。 - 廣播劇:音效、環境聲在剪輯軟體裡後期疊加,本技能只輸出人聲。
方案對比:小說推文配音的三種做法
| 對比項 | 人工配音 | 本地開源 TTS 模型 | 本技能 |
|---|---|---|---|
| 是否需要顯示卡 | 不需要,但需要錄音環境和配音員檔期 | 通常需要(小模型可用 CPU 但更慢),還要下載模型權重、配環境 | 不需要,本地只跑 Python 標準庫,生成在雲端完成 |
| 改稿成本 | 改一句往往要補錄、再對軌 | 改完重跑,但分段、拼接、對齊要自己做 | 只改那一行重跑,其餘句子複用 out/lines/ 快取,自動重新拼接和出字幕 |
| 多角色 | 需要多位配音員分別錄 | 取決於模型,一般要自己分段呼叫再拼接 | 稿件裡用 [角色] 標籤,一條命令出整段多角色音軌 |
| 字幕時間軸 | 需另外聽寫、打軸 | 一般要再跑一遍語音辨識 | 配音時同時輸出 SRT 和逐句時間 manifest.json |
| 連載一致性 | 長週期錄製,配音員狀態和檔期會變化 | 可保持一致,但長文字切分拼接要自己做 | 音色寫在 front matter,每集 / 每章聲線一致 |
結論:小說推文日更、試聽樣章和長篇連載,用本技能效率最高;對表演細膩度要求很高的精品有聲書,真人主播仍有優勢。
常見問題(FAQ)
小說推文配音能做到多個角色不同聲音嗎?
能。旁白和每個角色在稿件開頭各定義一個音色,正文用 [角色] 標籤切換,一條命令生成整段。
小說推文配音常用什麼聲音? 旁白選穩定、耐聽、和題材匹配的聲線(甜寵偏溫柔,懸疑偏低沉),先單句試聽幾個角色再定;整個帳號固定一個旁白聲線,觀眾靠聲音認號。
可以拿別人的網路小說做推文配音發布嗎? 需要版權方或推文平台授權。可以放心使用的是公版作品、你自己的原創,或已獲授權的作品。
有聲書配音的旁白能用我自己的聲音嗎?
可以,用你已複刻的角色或參考音頻克隆,填給 narrator,整本書都用它。
有聲書配音幾十章怎麼批量生成?
一章一個稿件檔案,循環呼叫 script 輸出到各自目錄;修改某章時只有改過的句子會重新生成。
小說推文配音的字幕能顯示是誰在說話嗎?
能。--preset youshengshu 預設給字幕加角色名;不需要就改用 --gap / --max-chars 手動設定。
多角色配音裡人名、生僻字讀錯了怎麼辦? 先單句試聽,讀錯就在稿裡換成同音常用字或改用稱呼,只重配這一句。
睡前故事、兒童故事配音怎麼調參數?
旁白 speed=0.85–0.9,段落之間加 [pause 0.8] 以上,句子寫短、用詞簡單。
小說推文配音需要顯示卡嗎?哪些 Agent 能用? 不需要顯示卡,本地只跑 Python 3.9+ 標準庫;Claude Code、Codex、OpenClaw、Cursor、WorkBuddy 都能直接呼叫。
沒有 API Key 能先試嗎?
可以,加 --dry-run 輸出靜音佔位音頻和時間軸。
稿件語法
- 開頭
---之間每行定義一個角色:角色名: actor_id=角色ID或角色名: ref=參考音頻URL ref_text="參考音頻裡實際說的話";可加speed=(0.25–4)、model=expressive|standard、tags=標籤1,標籤2、language=(參考音頻的語言提示,用於自動辨識參考文字)。 ref_text=只和ref=一起用;省略時伺服器端自動辨識參考文字,計費方式不同,以capabilities為準。- 正文
[角色] 台詞或[角色]:台詞;不寫標籤沿用上一位說話人。 [pause 0.6]/[停頓 0.6]插入停頓(秒);#開頭的行、空行和<!-- 註解 -->會被忽略。- 單句超過
capabilities裡的audio.max_text_length會被介面拒絕,拆成短句即可。 - 每句音頻快取在
out/lines/,同一句同一設定再次執行直接複用;沒快取時用同一個冪等鍵提交,伺服器端回傳原任務、不重複建立。要新的一版加--fresh。
出問題了?
| 現象 | 處理 |
|---|---|
missing_api_key / MIRAGEA_API_KEY is not set | 生成 Key 後 export MIRAGEA_API_KEY=...;或先加 --dry-run |
speakers without a voice | 給該角色補 actor_id= 或 ref= |
| 401 | 檢查 Key;不要把 Key 寫進日誌 |
| 403 | 檢查帳號的 API 存取權限 |
| 400 / 413 | 修正參數:模式、標籤、語速、單句字數;或減小上傳檔案、縮短媒體 |
| 409 | 冪等鍵被用於不同輸入,或字幕費率已變化:重新確認後再提交 |
| 429 | 額度不足或限流,等待或補充額度 |
| 等待超時 / 網路中斷 | 任務可能仍在執行:直接重跑同一條命令(同一冪等鍵會取回原任務),或用 miragea_audio.py task / wait 任務ID 繼續查詢,不要換鍵重發 |
| 拼接時報 WAV 格式不一致 | 每句音頻都保存在 out/lines/,可用剪輯軟體或 ffmpeg 拼接 |
官方客戶端退出碼:0 請求成功(沒有 --wait 時可能仍在排隊),1 任務失敗,2 客戶端或介面錯誤。
合規
- 只克隆你本人或已獲得明確授權的聲音,不模仿明星、主播、公眾人物或任何未授權的人。
- 按《人工智慧生成合成內容標識辦法》和抖音、快手、影片號、小紅書、B站等平台規則,發布時聲明或標註 AI 生成內容。
- 小說推文和有聲書涉及作品改編權、資訊網路傳播權:只用公版作品、你自己的原創,或已獲得版權方 / 推文平台授權的作品。
scripts/miragea_audio.pyis the official client, shipped unchanged;scripts/voiceover.py(稿件拼接層)為原創,MIT 許可(見LICENSE.txt)。配音與字幕能力由 Miragea 開放 API 提供。
English Summary
- Novel video & audiobook voiceover (小說推文配音 / 有聲書配音): narrator plus one voice per character, rendered into one WAV.
- Speaker-labelled SRT subtitles and per-line timing for novel promo videos; paragraph, scene and chapter pauses.
- Voices from your account (
actor_id) or voice cloning from a reference clip for a consistent narrator.--preset youshengshu= 0.5 s gaps, 20-character cues, speaker labels on. - Python 3.9+ stdlib, no GPU,
--dry-runoffline. Service: Miragea API (https://miragea.ai/v1).
關鍵詞:小說推文配音、有聲書配音、多角色配音、小說推文、小說配音、AI有聲書、有聲小說、小說推文影片、AI朗讀、廣播劇配音、故事配音、AI配音、聲音克隆、字幕生成、SRT、audiobook、narration、text to speech