前一天先完成了 Speech-to-Text,讓 AI 可以把使用者說的話轉成文字。
今天要做的事情剛好相反:
Text
↓
TTS
↓
Audio
↓
Playback
讓 AI 不只能「聽懂」,也能真正開口說話。
如果要做一個高齡智慧健康 AI Companion,只透過文字回覆其實不太夠。
對部分高齡使用者來說,比起一直閱讀螢幕上的文字,直接用語音互動會更直覺。
未來不論是日常陪伴、提醒或衛教內容,都需要透過聲音自然傳達。
完整流程會逐漸變成:
使用者說話
↓
STT
↓
LLM
↓
TTS
↓
AI 說話
今天還沒有接上 LLM,所以先從 Terminal 手動輸入文字開始。
一開始我也測試過較大的 TTS 模型,但如果希望之後做即時語音互動,生成速度就會變得很重要。
因此這次選擇:
mlx-community/Kokoro-82M-bf16
Kokoro 模型相對小,可以透過 MLX 在 Apple Silicon 上本機執行,也不需要額外提供參考音訊。
目前使用:
zf_xiaoxiao
作為預設中文聲線。
執行:
.venv-kokoro/bin/python -m app.tts.kokoro_cli \
--text "你好,今天過得怎麼樣?"
流程:
輸入文字
↓
Kokoro 82M
↓
產生 WAV
↓
自動播放
也可以調整聲線與語速:
.venv-kokoro/bin/python -m app.tts.kokoro_cli \
--text "今天有記得吃飯嗎?" \
--voice zf_xiaoxiao \
--speed 0.9
這次一樣使用 RTF(Real-Time Factor)觀察 TTS 速度:
RTF = Inference Time / Audio Duration
當:
RTF < 1
代表生成速度比實際播放速度快。
這次測試幾種不同長度的中文句子,觀察:
除了看生成速度,也可以確認短句和長句之間的差異。
速度之外,也需要確認生成內容是不是清楚。
因此會測試:
目前中文句子的表現相對穩定,但中英文混合時,部分英文詞的發音可能比較不自然。
之後可以考慮在送進 TTS 前,先加入文字正規化。
這次也會測試不同語速,例如:
speed = 0.9
speed = 1.0
speed = 1.1
如果未來主要應用在高齡使用者,我目前會比較傾向稍微降低語速,讓語音更容易聽清楚。
不過這部分還是需要後續實際測試,不能只靠單一設定決定。
Day 03 完成:
Text
↓
Kokoro 82M
↓
Audio
↓
Playback
到這裡,AI Companion 已經有兩個最基本的語音能力:
Day 02
語音 → 文字
Day 03
文字 → 語音
下一步想再往前一步:
如果提供一小段真人錄音,AI 能不能用相似的聲線說出新的內容?
Day 04 準備進入 Voice Cloning。