1. 程式拆文章
將輸入文字依照句號、問號、驚嘆號與換行切成句子或短段落。
支援聲音描述、角色情境、上傳聲音、歌曲範例與長文串流播放流程;API 預設 http://127.0.0.1:8821。
VoxCPM2.cpp 預設使用本機 API,檢查成功後再生成語音。
10 個一般範例 + 5 個歌曲範例;使用上方統一切換短、中、長與語言。
參考音訊建議 5 到 15 秒,背景乾淨,參考文字需與音訊一致。
VoxCPM.cpp 沒有列表 API,這裡顯示本頁記住的 Voice ID 並逐一檢查。
| Voice ID | 狀態 | 操作 |
|---|---|---|
| 尚無資料 | ||
聲音描述與角色情境合併成同一個欄位;指導強度與擴散步數會一併送給 VoxCPM2。
目前沒有生成紀錄。
| 聲音描述 / 情境 | 文字 | 音訊 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 尚無生成紀錄。 | |||||||||||||
VoxCPM 支援透過音訊串流輸出 generate_streaming()。互動式應用建議由程式先拆文章,再逐句呼叫與播放。
將輸入文字依照句號、問號、驚嘆號與換行切成句子或短段落。
每次只把一個句子送進 generate_streaming(),比處理單一不斷增長的文字輸入更穩定。
每段生成後立即播放,等這段播完再送下一段,貼近 sd.play() 加 sd.wait() 的做法。
import sounddevice as sd
import numpy as np
sample_rate = model.tts_model.sample_rate
for chunk in model.generate_streaming(
text="這是一段串流語音測試!",
):
sd.play(chunk, samplerate=sample_rate)
sd.wait() # 等這段播完再繼續async function playByChunks(chunks) {
for (const chunk of chunks) {
const audio = await generateOneSentence(chunk);
await audio.play();
await waitUntilEnded(audio);
}
}