
Pocket TTS音頻輸出格式詳解24kHz采樣率與PCM數據怎么處理【免費下載鏈接】pocket-ttsA TTS that fits in your CPU (and pocket)項目地址: https://gitcode.com/GitHub_Trending/po/pocket-ttsPocket TTSKyutai 開源的輕量級 TTS 文本轉語音系統是一個完全運行在 CPU 上的語音生成工具1 億參數、支持音頻流式輸出、首塊延遲約 200ms生成的是24kHz 采樣率、16 位 PCM 編碼的單聲道 WAV音頻。本文帶你從零理解這套音頻格式是怎么產生的——24kHz 采樣率從何而來、浮點波形如何變成 PCM 字節、以及輸入音頻如何被重采樣到 24kHz幫你徹底搞懂 Pocket TTS 音頻輸出的每一個環節。24kHz 采樣率從哪里來Pocket TTS 的音頻標準由底層的Mimi 音頻編解碼器決定。在所有語言配置如 pocket_tts/config/english.yaml中都有這樣一段sample_rate: 24000—— 輸出 24kHz 采樣率channels: 1—— 單聲道frame_rate: 12.5—— 編解碼器每秒只產生 12.5 個音頻幀也就是說每個音頻 tokenlatent對應 1/12.5 80ms 的語音。語言模型每生成一個 tokenMimi 解碼器就吐出 80ms 的 24kHz 波形這也正是流式輸出能低延遲工作的原因不用等整段語音生成完每攢夠一小段就能立刻播放。為什么選 24kHz 而不是 44.1kHz兩個理由音質足夠人聲有效頻率集中在 4kHz 以下24kHz 采樣率奈奎斯特頻率 12kHz完全覆蓋語音頻段算力友好Pocket TTS 的目標是裝進口袋的 TTS更低的采樣率意味著更少的樣本數和更快的 CPU 推理正好匹配它 2 核 CPU 就能跑的定位。PCM 數據怎么處理從浮點波形到 16 位 WAV模型內部運算用的是float32 浮點波形取值范圍 -1 到 1而寫入文件的 PCM 是int16 整型。轉換發生在 pocket_tts/data/audio.py 的StreamingWAVWriter中核心邏輯只有兩步寫文件頭聲明單聲道、16 位采樣寬度setsampwidth(2)、24kHz 采樣率逐塊轉換每收到一段浮點音頻先clamp(-1, 1)削頂防溢出再乘以 32767 轉成 int16 字節流寫入文件。這里有 3 個新手容易忽略的細節 結尾補 200ms 靜音finalize()會往文件末尾追加 0.2 秒的靜音讓句尾收尾更自然避免播放器截斷尾音 支持不可尋流的 stdout當輸出目標是管道--output-path -而非普通文件時無法回頭修改 WAV 頭部的幀數代碼會把幀數先寫成占位值 10 億并跳過頭部回填pocket_tts/data/audio.py? 首塊緩沖可通過環境變量FIRST_CHUNK_LENGTH_SECONDS控制攢夠多少秒再落盤用于調低首次寫盤延遲。整個流式寫入的調度入口是 pocket_tts/data/audio.py 的stream_audio_chunks()它支持把音頻塊寫入文件、寫入 stdout或僅打印pathNone三種模式共用同一套 PCM 轉換邏輯。輸入音頻怎么辦重采樣與單聲道化聲音克隆時你提供的參考音頻往往是 44.1kHz 的立體聲 MP3Pocket TTS 會把它翻譯成模型能吃的 24kHz 單聲道格式處理環節做了什么位置讀取16 位 WAV 用內置wave模塊讀為 float32除以 32768 歸一化其他格式走 soundfileaudio.py降混多聲道取平均得到單聲道同上重采樣用scipy.resample_poly按最大公約數精確換算到 24kHz如 44100→24000audio_utils.py重采樣用resample_poly而不是簡單抽點是為了避免頻譜混疊——這也是官方建議克隆前先清理參考音頻的原因之一輸入質量會直接影響輸出。三種方式拿到 24kHz PCM 音頻1. CLI 命令行pocket-tts generate默認輸出到./tts_output.wavpocket_tts/main.py。加-可把 WAV 流直接打到終端管道pocket-tts generate --output-path - | aplay2. 本地服務pocket-tts serve啟動 FastAPI 服務pocket_tts/main.py/tts接口以audio/wav chunked 編碼邊生成邊推送瀏覽器端可以實現邊下載邊播放的流式體驗。3. Python APITTSModel 提供兩種方法——generate_audio()返回完整張量形狀[channels, samples]采樣率從model.sample_rate屬性讀取即 24000generate_audio_stream()則逐塊 yield 音頻張量適合做實時播放器集成。關鍵文件路徑速查文件作用pocket_tts/data/audio.py音頻讀寫、流式 WAV 寫入與 PCM 轉換pocket_tts/data/audio_utils.py重采樣與聲道轉換工具pocket_tts/models/tts_model.pyTTS 主模型流式生成入口pocket_tts/config/english.yaml24kHz/12.5fps 等音頻參數配置pocket_tts/main.pyCLI 與 HTTP 服務實現docs/API Reference/python-api.mdPython API 完整參考一句話總結Pocket TTS 的音頻世界非常簡單統一——24kHz、16 位、單聲道 PCM模型內部是 float32 波形落盤時乘以 32767 變成 int16流式逐塊寫入 WAV輸入音頻則通過resample_poly重采樣到這個標準。搞懂這一點你就能放心地把它的輸出接進任何播放器、剪輯軟件或你自己的實時語音管道里。【免費下載鏈接】pocket-ttsA TTS that fits in your CPU (and pocket)項目地址: https://gitcode.com/GitHub_Trending/po/pocket-tts創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考