Communitygithub.com

tts

將文字轉換為語音音訊。支援兩種後端(Kokoro 本地、Noiz 雲端)、兩種模式(簡單或時間軸精確),以及分段語音控制。

tts 是什麼?

此技能可將文字轉換為語音音訊,適合朗讀、配音、有聲書製作等場景。它支援兩種後端:Kokoro(完全離線、本地執行)和 Noiz(雲端服務,提供語音克隆、情感控制與精確時長功能)。技能提供兩種操作模式——**簡單模式**可快速將文字或檔案(如 EPUB、SRT)轉為音訊;**時間軸模式**則能根據 SRT 字幕檔案產製逐段時間對齊的音訊,適合配音與字幕製作。使用者可透過 JSON 語音映射文件精準控制每一段的語者、語言、語速與情感,並針對影片配音提供動態參考音訊切片功能(`--ref-audio-track`)。無需 API 金鑰時會自動啟用訪客模式,可使用 15 種內建語音。支援的命令列介面與語音映射檔設計使其易於整合進 Claude Code、Cursor 等 AI 代理工具鏈中。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/noizai/skills/tree/main/skills/tts

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

tts 是做什麼的?

將任何文字轉換為語音音訊。支援兩種後端(Kokoro 本地、Noiz 雲端)、兩種模式(簡單或時間軸精確),以及分段語音控制。

觸發條件

  • 文字轉語音 / tts / 朗讀 / 說
  • 語音克隆 / 配音
  • epub 轉音訊 / srt 轉音訊 / 轉換為音訊
  • 语音 / 说 / 讲 / 说话

簡單模式 — 文字轉音訊

speak 是預設子命令,可省略不寫:

# 基本用法(speak 為隱含命令)
python3 skills/tts/scripts/tts.py -t "Hello world"          # 加上 -o 路徑可儲存
python3 skills/tts/scripts/tts.py -f article.txt -o out.mp3

# 語音克隆 — 本地檔案路徑或 URL
python3 skills/tts/scripts/tts.py -t "Hello" --ref-audio ./ref.wav
python3 skills/tts/scripts/tts.py -t "Hello" --ref-audio https://example.com/my_voice.wav -o clone.wav

# 語音訊息格式
python3 skills/tts/scripts/tts.py -t "Hello" --format opus -o voice.opus
python3 skills/tts/scripts/tts.py -t "Hello" --format ogg -o voice.ogg

第三方整合(飛書/Telegram/Discord)請參閱 ref_3rd_party.md。

時間軸模式 — SRT 轉時間對齊音訊

適用於需要精確分段時機的場景(配音、字幕、影片旁白)。

步驟 1:取得或建立 SRT 檔案

如果使用者沒有現成 SRT,可從文字產生:

python3 skills/tts/scripts/tts.py to-srt -i article.txt -o article.srt
python3 skills/tts/scripts/tts.py to-srt -i article.txt -o article.srt --cps 15 --gap 500

--cps = 每秒字元數(中文預設 4,英文約 15)。代理程式也可手動編寫 SRT。

步驟 2:建立語音映射檔案

JSON 檔案,控制預設及每段語音設定。segments 鍵支援單一索引 "3" 或範圍 "5-8"。

Kokoro 語音映射:

{
  "default": { "voice": "zf_xiaoni", "lang": "cmn" },
  "segments": {
    "1": { "voice": "zm_yunxi" },
    "5-8": { "voice": "af_sarah", "lang": "en-us", "speed": 0.9 }
  }
}

Noiz 語音映射(新增 emo、reference_audio 支援)。reference_audio 可以為本機路徑或 URL(使用者自己的音訊;僅 Noiz 支援):

{
  "default": { "voice_id": "voice_123", "target_lang": "zh" },
  "segments": {
    "1": { "voice_id": "voice_host", "emo": { "Joy": 0.6 } },
    "2-4": { "reference_audio": "./refs/guest.wav" }
  }
}

動態參考音訊切片: 如果您正在翻譯或配音一段影片,且希望每個句子自動使用原始影片中相同時間戳記的音訊作為參考音訊,請改用 --ref-audio-track 參數,而不是在映射檔中設定 reference_audio:

python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json --ref-audio-track original_video.mp4 -o output.wav

完整範例請參閱 examples/。

步驟 3:渲染

python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json -o output.wav
python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json --backend noiz --auto-emotion -o output.wav

何時選擇哪一種

需求建議
單純朗讀文字,不複雜Kokoro(預設)
EPU/PDF 有聲書含章節Kokoro(原生支援)
語音混合("v1:60,v2:40")Kokoro
從參考音訊進行語音克隆Noiz
情感控制(emo 參數)Noiz
每個片段精確的伺服端時長Noiz

當使用者需要同時使用情感控制 + 語音克隆 + 精確時長時,Noiz 是唯一支援全部三者的後端。

訪客模式(無 API 金鑰)

當未設定 API 金鑰時,tts.py 會自動降級為訪客模式——一個不需要認證、功能受限的 Noiz 端點。訪客模式僅支援 --voice-id、--speed 和 --format;語音克隆、情感、時長與時間軸渲染均不可用。

# 訪客模式(未設定 API 金鑰時自動偵測)
python3 skills/tts/scripts/tts.py -t "Hello" --voice-id 883b6b7c -o hello.wav

# 明確指定後端改用 kokoro
python3 skills/tts/scripts/tts.py -t "Hello" --backend kokoro

可用的訪客語音(15 種內建):

voice_idnamelanggendertone
063a4491販売員(なおみ)ja女喜び
4252b9c8落ち着いた女性ja女穏やか
578b4be2熱血漢(たける)ja男怒り
a9249ce7安らぎ(みなと)ja男穏やか
f00e45a1旅人(かいと)ja男穏やか
b4775100悅悅|社交分享zh女Joyful
77e15f2c婉青|情緒撫慰zh女Calm
ac09aeb4阿豪|磁性主持zh男Calm
87cb2405建國|知識科普zh男Calm
3b9f1e27小明|科技達人zh男Joyful
95814addScience Narrationen男Calm
883b6b7cThe Mentor (Alex)en男Joyful
a845c7deThe Naturalist (Silas)en男Calm
5a68d66bThe Healer (Serena)en女Calm
0e4ab6ecThe Mentor (Maya)en女Calm

安全性與資料揭露

此技能在執行時會進行以下檔案與網路操作:

  • 憑證儲存:當您執行 config --set-api-key 時,金鑰會儲存至 ~/.config/noiz/api_key(權限 0600)。也可使用 NOIZ_API_KEY 環境變數作為替代。
  • 舊金鑰遷移:如果 ~/.noiz_api_key 存在而 ~/.config/noiz/api_key 不存在,金鑰會被複製(非刪除)到新位置。會印出提示訊息;舊檔案保持不變,供您手動移除。
  • 網路呼叫(Noiz 後端):文字與選擇性的參考音訊會上傳至 https://noiz.ai/v1/ 進行合成。除非您執行 Noiz 命令,否則不會傳送任何資料。
  • 參考音訊下載:當 --ref-audio 為 URL 時,檔案會下載至暫存檔,用於 API 呼叫後刪除。若未提供 voice-id 或 ref-audio,會從 storage.googleapis.com 或 noiz.ai 下載預設參考音訊。
  • 暫存檔:合成過程中可能建立暫存音訊/文字檔,使用後即清除。
  • ffmpeg:僅在時間軸 render 模式中呼叫,以組合最終音訊。

不會修改輸出路徑和 ~/.config/noiz/ 以外的任何檔案。Kokoro 後端完全離線執行,無網路存取。

需求

  • ffmpeg 在 PATH 環境變數中(僅時間軸模式需要)
  • requests 套件:uv pip install requests(Noiz 後端需要)
  • 在 Noiz Developer 取得您的 API 金鑰,然後執行 python3 skills/tts/scripts/tts.py config --set-api-key YOUR_KEY(訪客模式無需金鑰即可運作,但功能有限)
  • Kokoro:若已安裝,傳入 --backend kokoro 即可使用本地後端

Noiz API 驗證

僅使用 Base64 編碼的 API 金鑰作為 Authorization——無需前綴(例如不要加 APIKEY 或 Bearer )。任何前綴都會導致 401 錯誤。

有關後端詳細資訊與完整參數說明,請參閱 reference.md。

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

相關技能