語音生成
使用 VV、PY 變數,如同 videomotion 技能。
執行
"$PY" "$VV/tools/voice/voice.py" <du-an> > <du-an>/voice.log 2>&1
如果腳本長度超過 1 分鐘,請在背景執行。當日誌中出現 VOICEDONE 時表示完成。所有生成的語音都會根據內容進行快取:若修改 script.json 中的某個句子後重新執行,則僅會重新生成該句子。
讀取結果
- 每個句子會輸出
score <id>: <分數> ok|WEAK | <Whisper 聽到的內容>。 - 執行一次即可。分數僅用於篩選,無需追求高分。Whisper 聽錯英文名稱(如 "Claude" 變成 "Clock"、"code" 變成 "cốt")所導致的 WEAK 並非朗讀錯誤。
- 真正的 WEAK(讀錯、吞字、讀錯數字):請依序修正
- 重寫句子,使其包含越南語主詞,避免少於 5 個字的句子或開頭為英文名稱的句子;
- 在
script.json的"pron"中新增條目,例如"MCP": "em xi pi"(鍵名包含大寫字母時,會區分大小寫); - 使用
--candidates 4重新執行。
- 需要在所有專案中修正的詞彙:請加入
~/.motionfly/pron.json。
語音
預設為 Ngọc Huyền(女性,北部口音)。部分可用語音:Ngọc Huyền、Mai Anh(新聞)、Trúc Ly、Thùy Dung(男性,新聞)、Hải Đăng、Thiện Minh(說書)、Quang Sơn 和 Ngọc Trân(中部口音)。查看全部 25 種語音:
"$PY" -c "from vieneu import Vieneu; [print(v[0]) for v in Vieneu().list_preset_voices()]"
在 script.json 的 "voice" 欄位中設定語音。
輸出
voice.wav:48 kHz 單聲道,內含停頓:開頭 0.5 秒,句子之間 0.35 秒,符號|0.55 秒,場景之間 0.7 秒,結尾 0.8 秒。words.json:包含total、scenes(每個場景的開始與結束時間戳記)、segments(每個句子及其分數、WEAK 標記)、words(每個顯示字詞的start、end時間)。顯示字詞保持與腳本相同的文字,即使實際朗讀文字已透過pron被更改。