音應(yīng)用實(shí)戰(zhàn)指南:demos 目錄全場(chǎng)景解析)
PaddleSpeech 語(yǔ)音應(yīng)用實(shí)戰(zhàn)指南demos 目錄全場(chǎng)景解析【免費(fèi)下載鏈接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.項(xiàng)目地址: https://gitcode.com/paddlepaddle/PaddleSpeechPaddleSpeech 的demos/目錄匯集了 15 個(gè)可直接運(yùn)行的語(yǔ)音應(yīng)用示例覆蓋語(yǔ)音識(shí)別ASR、語(yǔ)音合成TTS、音頻分類CLS、語(yǔ)音翻譯ST、說話人驗(yàn)證、流式服務(wù)端等核心任務(wù)。本指南以 demos/README.md 為骨架逐一對(duì)每個(gè) demo 的用途、命令用法、參數(shù)含義與預(yù)訓(xùn)練模型進(jìn)行講解并結(jié)合倉(cāng)庫(kù)源碼與配置文件如 demos/speech_server/conf/application.yaml補(bǔ)充底層實(shí)現(xiàn)細(xì)節(jié)幫助你快速選定并跑通適合自己業(yè)務(wù)場(chǎng)景的語(yǔ)音應(yīng)用。上圖展示了audio_searchingdemo 中音頻向量入庫(kù)—Milvus 相似度檢索—MySQL 元數(shù)據(jù)回查的完整工作流它是 demos 目錄中架構(gòu)最完整、組件最豐富的示例之一。本文將按單機(jī)命令行任務(wù) → 服務(wù)化部署 → 復(fù)合場(chǎng)景應(yīng)用三個(gè)層次展開全部 demo。一、demos 目錄全景15 個(gè)應(yīng)用一覽根據(jù) demos/README.md該目錄包含以下語(yǔ)音應(yīng)用Demo 目錄核心能力依賴組件audio_searching大規(guī)模音頻相似度檢索Milvus MySQL FastAPIaudio_tagging音頻多標(biāo)簽分類527 類 AudioSetPaddleSpeech CLSautomatic_video_subtitles視頻自動(dòng)字幕ASR 標(biāo)點(diǎn)恢復(fù)metaverse讓圖片中的人物開口說話TTS PaddleGANpunctuation_restoration無標(biāo)點(diǎn)文本標(biāo)點(diǎn)恢復(fù)PaddleNLP ERNIEspeech_recognition音頻轉(zhuǎn)寫文本ASRspeech_server離線語(yǔ)音服務(wù)HTTPASR/TTS/CLS/Text/Vector 多引擎streaming_asr_server流式語(yǔ)音識(shí)別服務(wù)WebSocketDeepSpeech2/Conformerstreaming_tts_server流式語(yǔ)音合成服務(wù)HTTP/WebSocketFastSpeech2 流式聲碼器speech_translation端到端語(yǔ)音翻譯FAT-ST 模型story_talker基于 OCR TTS 的故事書朗讀器PaddleOCR TTSstyle_fs2FastSpeech2 多風(fēng)格控制FastSpeech2text_to_speech文本轉(zhuǎn)語(yǔ)音多種聲學(xué)模型 聲碼器speech_ssl自監(jiān)督預(yù)訓(xùn)練特征提取與識(shí)別wav2vec2/HuBERT/WavLMwhisper基于 Whisper 的識(shí)別與翻譯Whisper絕大多數(shù) demo 都遵循統(tǒng)一的使用范式安裝 PaddleSpeech → 準(zhǔn)備 WAV 輸入文件 → 通過paddlespeech命令行或 Python Executor API 完成任務(wù)。下文將先介紹這些可單命令完成的語(yǔ)音任務(wù)。二、單命令語(yǔ)音任務(wù)一次調(diào)用即可完成的推理2.1 語(yǔ)音識(shí)別speech_recognitiondemos/speech_recognition/README.md 演示了最基礎(chǔ)的 ASR 能力。輸入必須是 WAV 文件且采樣率需與模型一致默認(rèn) 16k。# 下載示例音頻 wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/zh.wav https://paddlespeech.cdn.bcebos.com/PaddleAudio/en.wav https://paddlespeech.cdn.bcebos.com/PaddleAudio/ch_zh_mix.wav # 中文識(shí)別 paddlespeech asr --input ./zh.wav -v # 英文識(shí)別指定 transformer_librispeech 模型 paddlespeech asr --model transformer_librispeech --lang en --input ./en.wav -v # 中英混說Code-Switch 模型 paddlespeech asr --model conformer_talcs --lang zh_en --codeswitch True --input ./ch_zh_mix.wav -v # ASR 結(jié)果管道到標(biāo)點(diǎn)恢復(fù) paddlespeech asr --input ./zh.wav -v | paddlespeech text --task punc -v核心參數(shù)包括model默認(rèn)conformer_wenetspeech、lang默認(rèn)zh、codeswitch默認(rèn)False、sample_rate默認(rèn)16000、config/ckpt_path置None時(shí)自動(dòng)使用預(yù)訓(xùn)練模型、yes接受程序自動(dòng)轉(zhuǎn)換音頻采樣率、device與verbose。其中paddlespeech-ctcdecoders是可選依賴缺失不影響基本功能。倉(cāng)庫(kù)提供的中文預(yù)訓(xùn)練模型全家桶采樣率均為 16kconformer_wenetspeech、conformer_online_multicn、conformer_aishell、conformer_online_aishell、deepspeech2online_wenetspeech、deepspeech2offline_aishell、deepspeech2online_aishell英文模型transformer_librispeech、deepspeech2offline_librispeech中英混說模型conformer_talcs。對(duì)應(yīng)的 Python 寫法是from paddlespeech.cli.asr import ASRExecutor后調(diào)用asr_executor(model..., audio_file..., force_yesFalse, devicepaddle.get_device())。2.2 文本轉(zhuǎn)語(yǔ)音text_to_speechdemos/text_to_speech/README.md 覆蓋了最豐富的 TTS 組合默認(rèn)聲學(xué)模型為Fastspeech2、默認(rèn)聲碼器為HiFiGAN默認(rèn)走動(dòng)態(tài)圖推理。# 中文 paddlespeech tts --input 你好歡迎使用百度飛槳深度學(xué)習(xí)框架 # 批量合成stdin 每行格式編號(hào) 空格 文本 echo -e 1 歡迎光臨。\n2 謝謝惠顧。 | paddlespeech tts # 使用 SpeedySpeech 聲學(xué)模型 paddlespeech tts --am speedyspeech_csmsc --input 你好歡迎使用百度飛槳深度學(xué)習(xí)框架 # 中文多說話人切換 spk_id paddlespeech tts --am fastspeech2_aishell3 --voc pwgan_aishell3 --input 你好歡迎使用百度飛槳深度學(xué)習(xí)框架 --spk_id 0 # 英文 paddlespeech tts --am fastspeech2_ljspeech --voc pwgan_ljspeech --lang en --input hello world # 中英混說多說話人am 必須為 fastspeech2_mixlang 必須為 mix paddlespeech tts --am fastspeech2_mix --voc hifigan_csmsc --lang mix --input 熱烈歡迎您在 Discussions 中提交問題。 --spk_id 174 --output mix_spk174.wav # 粵語(yǔ) paddlespeech tts --am fastspeech2_canton --voc pwgan_aishell3 --input 各個(gè)國(guó)家有各個(gè)國(guó)家嘅國(guó)歌 --lang canton --spk_id 10 # 使用 ONNXRuntime 推理--use_onnx True paddlespeech tts --input 你好歡迎使用百度飛槳深度學(xué)習(xí)框架 --output default.wav --use_onnx True參數(shù)方面am是聲學(xué)模型類型默認(rèn)fastspeech2_csmscvoc是聲碼器默認(rèn)pwgan_csmsc另有am_config/am_ckpt/am_stat/phones_dict/tones_dict/speaker_dict、voc_config/voc_ckpt/voc_stat、spk_id默認(rèn)0、lang默認(rèn)zh、output默認(rèn)output.wav、use_onnx、fs等參數(shù)。Python 側(cè)使用TTSExecutorONNX 推理時(shí)還可指定cpu_threads控制線程數(shù)。聲學(xué)模型候選包括speedyspeech_csmsc、fastspeech2_csmsc、fastspeech2_ljspeech、fastspeech2_aishell3、fastspeech2_vctk、fastspeech2_cnndecoder_csmsc、fastspeech2_mix、tacotron2_csmsc、tacotron2_ljspeech、fastspeech2_male、fastspeech2_canton聲碼器候選包括pwgan_csmsc、pwgan_ljspeech、pwgan_aishell3、pwgan_vctk、mb_melgan_csmsc、style_melgan_csmsc、hifigan_csmsc、hifigan_ljspeech、hifigan_aishell3、hifigan_vctk、wavernn_csmsc、pwgan_male、hifigan_male。2.3 音頻多標(biāo)簽分類audio_taggingdemos/audio_tagging/README.md 用 527 個(gè) AudioSet 標(biāo)簽對(duì)音頻文件做多標(biāo)簽標(biāo)注覆蓋音樂標(biāo)注、聲學(xué)場(chǎng)景分類、音頻事件分類等場(chǎng)景。wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/cat.wav https://paddlespeech.cdn.bcebos.com/PaddleAudio/dog.wav paddlespeech cls --input ./cat.wav --topk 10參數(shù)含義input必填待分類音頻、model默認(rèn)panns_cnn14、config/ckpt_path置None使用預(yù)訓(xùn)練模型、label_file置None使用 AudioSet 標(biāo)簽、topk返回前 k 個(gè)標(biāo)簽?zāi)J(rèn)1、device。實(shí)際輸出中Cat: 0.899、Meow: 0.878 等分?jǐn)?shù)表示模型對(duì)各類別的置信度。Python 側(cè)通過from paddlespeech.cli.cls import CLSExecutor調(diào)用。預(yù)訓(xùn)練模型有panns_cnn6、panns_cnn10、panns_cnn14采樣率均為 32000。2.4 標(biāo)點(diǎn)恢復(fù)punctuation_restorationdemos/punctuation_restoration/README.md 解決 ASR 轉(zhuǎn)寫文本無標(biāo)點(diǎn)、可讀性差的問題paddlespeech text --input 今天的天氣真不錯(cuò)啊你下午有空嗎我想約你一起去吃飯 # 輸出今天的天氣真不錯(cuò)啊你下午有空嗎我想約你一起去吃飯。參數(shù)包括task默認(rèn)punc、model默認(rèn)ernie_linear_p7_wudao、lang默認(rèn)zh、config/ckpt_path/punc_vocab置None使用預(yù)訓(xùn)練、device。預(yù)訓(xùn)練模型按標(biāo)點(diǎn)種類數(shù)區(qū)分ernie_linear_p3_wudao支持 3 種標(biāo)點(diǎn)。ernie_linear_p7_wudao支持 7 種標(biāo)點(diǎn)。、。Python 側(cè)使用TextExecutor。2.5 語(yǔ)音翻譯speech_translationdemos/speech_translation/README.md 演示端到端語(yǔ)音翻譯當(dāng)前不支持 Windowspaddlespeech st --input ./en.wav # 輸出ST Result: [我 在 這棟 建筑 的 古老 門上 敲門 。]參數(shù)model默認(rèn)fat_st_ted、src_lang默認(rèn)en、tgt_lang默認(rèn)zh、sample_rate默認(rèn)16000、config/ckpt_path/device。預(yù)訓(xùn)練模型為fat_st_teden→zh。Python 側(cè)使用from paddlespeech.cli.st import STExecutor。2.6 關(guān)鍵詞喚醒keyword_spottingdemos/keyword_spotting/README.md 從語(yǔ)音中識(shí)別關(guān)鍵詞wget -c https://paddlespeech.cdn.bcebos.com/kws/hey_snips.wav https://paddlespeech.cdn.bcebos.com/kws/non-keyword.wav paddlespeech kws --input ./hey_snips.wav paddlespeech kws --input ./non-keyword.wav # hey_snips.wav → Score: 1.000, Threshold: 0.8, Is keyword: True # non-keyword.wav → Score: 0.000, Threshold: 0.8, Is keyword: False參數(shù)threshold打分閾值默認(rèn)0.8、model默認(rèn)mdtc_heysnips、config/ckpt_path/device/verbose。預(yù)訓(xùn)練模型mdtc_heysnipsen16k。Python 側(cè)使用KWSExecutor。2.7 說話人驗(yàn)證speaker_verificationdemos/speaker_verification/README.md 從音頻中提取說話人 embedding并支持打分wget -c https://paddlespeech.cdn.bcebos.com/vector/audio/85236145389.wav wget -c https://paddlespeech.cdn.bcebos.com/vector/audio/123456789.wav # 提取單條 embedding paddlespeech vector --task spk --input 85236145389.wav # 批量job 文件方式 echo -e demo1 85236145389.wav vec.job paddlespeech vector --task spk --input vec.job # 兩段音頻打分score 范圍 [0, 1] paddlespeech vector --task score --input ./85236145389.wav ./123456789.wav參數(shù)taskspk或score默認(rèn)spk、model默認(rèn)ecapatdnn_voxceleb12、sample_rate默認(rèn)16000、config/ckpt_path/device。Python 側(cè)使用VectorExecutor提取兩條 embedding 后可用vector_executor.get_embeddings_score(audio_emb, test_emb)計(jì)算相似度打分。這也正是 audio_searching 檢索系統(tǒng)中向量來源的基礎(chǔ)能力。2.8 自監(jiān)督語(yǔ)音模型speech_ssldemos/speech_ssl/README.md 演示基于大規(guī)模無標(biāo)注語(yǔ)音自監(jiān)督訓(xùn)練得到的 wav2vec2 等模型的兩種用法識(shí)別文本與提取聲學(xué)表征。wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/en.wav # 識(shí)別文本 paddlespeech ssl --task asr --lang en --input ./en.wav # 提取聲學(xué)表征 paddlespeech ssl --task vector --lang en --input ./en.wav參數(shù)model默認(rèn)wav2vec2可選wav2vec2、hubert、wavlm、task默認(rèn)asr、lang默認(rèn)en、sample_rate、config/ckpt_path/yes/device/verbose。Python 側(cè)使用SSLExecutorvector任務(wù)返回形如Tensor(shape[1, 164, 1024])的聲學(xué)表征可作為下游任務(wù)的輸入特征。2.9 Whisper 識(shí)別與翻譯whisperdemos/whisper/README.md 集成了 OpenAI Whisper 通用語(yǔ)音識(shí)別模型支持多語(yǔ)言識(shí)別、語(yǔ)音翻譯與語(yǔ)種識(shí)別wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/zh.wav # 識(shí)別 paddlespeech whisper --task transcribe --input ./zh.wav # 指定英文專用 base 尺寸模型 paddlespeech whisper --lang en --size base --task transcribe --input ./en.wav # 識(shí)別并翻譯為英文 paddlespeech whisper --task translate --input ./zh.wav參數(shù)model默認(rèn)whisper、task默認(rèn)transcribe、lang置en選擇英文專用模型medium/base/small/tiny尺寸支持英文專用、size默認(rèn)turbo可選turbo/large/medium/base/small/tiny、language強(qiáng)制指定識(shí)別語(yǔ)言默認(rèn)None由模型自行判定、sample_rate僅支持16000、yes/device/verbose。翻譯任務(wù)的輸出會(huì)附帶帶時(shí)間戳的分段結(jié)果與 token 信息文檔中提示翻譯功能使用large或medium模型效果更好。Python 側(cè)使用WhisperExecutor。三、服務(wù)化部署從單機(jī)命令到多客戶端并發(fā)3.1 離線語(yǔ)音服務(wù)speech_serverdemos/speech_server/README.md 用一條命令啟動(dòng)包含 ASR、TTS、CLS、標(biāo)點(diǎn)、說話人向量等任務(wù)的 HTTP 服務(wù)服務(wù)端與客戶端分別使用paddlespeech_server與paddlespeech_client。配置文件位于 demos/speech_server/conf/application.yaml。其中engine_list以speech task_engine type格式聲明要加載的引擎目前支持asr_python、asr_inference、tts_python、tts_inference、cls_python、cls_inference、text_python、vector_pythonpython表示動(dòng)態(tài)圖推理引擎inference表示基于 Paddle Inference 的靜態(tài)圖推理引擎。該配置文件完整給出了每個(gè)引擎的子配置例如asr_python可指定model: conformer_wenetspeech、lang: zh、decode_method: attention_rescoring、force_yes: Truetts_python需同時(shí)指定am聲學(xué)模型與voc聲碼器及各自的_config/_ckpt/_statvector_python默認(rèn)task: spk、model_type: ecapatdnn_voxceleb12。若服務(wù)可正常啟動(dòng)但客戶端 IP 不可達(dá)可嘗試將host改為本機(jī)實(shí)際 IP。啟動(dòng)服務(wù)與調(diào)用示例# 啟動(dòng)服務(wù)默認(rèn)端口 8090 paddlespeech_server start --config_file ./conf/application.yaml # 中英混說請(qǐng)改用 ./conf/conformer_talcs_application.yaml # ASR 客戶端 paddlespeech_client asr --server_ip 127.0.0.1 --port 8090 --input ./zh.wav # TTS 客戶端 paddlespeech_client tts --server_ip 127.0.0.1 --port 8090 --input 您好歡迎使用百度飛槳語(yǔ)音合成服務(wù)。 --output output.wav # CLS 客戶端 paddlespeech_client cls --server_ip 127.0.0.1 --port 8090 --input ./zh.wav # 說話人向量提取 embedding paddlespeech_client vector --task spk --server_ip 127.0.0.1 --port 8090 --input 85236145389.wav # 說話人向量計(jì)算兩段音頻打分 paddlespeech_client vector --task score --server_ip 127.0.0.1 --port 8090 --enroll 85236145389.wav --test 123456789.wav # 標(biāo)點(diǎn)預(yù)測(cè) paddlespeech_client text --server_ip 127.0.0.1 --port 8090 --input 我認(rèn)為跑步最重要的就是給我?guī)砹松眢w健康客戶端參數(shù)要點(diǎn)ASR 客戶端支持sample_rate默認(rèn) 16000、lang默認(rèn) zh_cn、audio_format默認(rèn) wavTTS 客戶端支持spk_id默認(rèn) 0、speed/volume取值 0~3默認(rèn) 1.0、sample_rate可選 0/8000/160000 表示與模型一致、outputvector 客戶端task可選spk或score。服務(wù)端start命令參數(shù)為config_file默認(rèn)./conf/application.yaml與log_file默認(rèn)./log/paddlespeech.log。查詢各任務(wù)支持的全部模型可使用paddlespeech_server stats --task asr|tts|cls|vector|text其中標(biāo)注為靜態(tài)模型的可用于 Paddle Inference 推理。Python 側(cè)通過from paddlespeech.server.bin.paddlespeech_server import ServerExecutor啟動(dòng)服務(wù)客戶端則使用paddlespeech.server.bin.paddlespeech_client下對(duì)應(yīng)的ASRClientExecutor、TTSClientExecutor、CLSClientExecutor、VectorClientExecutor、TextClientExecutor。3.2 流式語(yǔ)音識(shí)別服務(wù)streaming_asr_serverdemos/streaming_asr_server/README.md 實(shí)現(xiàn)基于WebSocket 協(xié)議不支持 HTTP的流式 ASR 服務(wù)音頻邊傳邊識(shí)別、結(jié)果邊識(shí)別邊返回。目前集成了 DeepSpeech2 與 Conformer 兩類在線模型。# 啟動(dòng)流式識(shí)別服務(wù)CPU 默認(rèn)改 device 參數(shù)可部署到 GPU paddlespeech_server start --config_file ./conf/ws_conformer_wenetspeech_application.yaml # 追求更快解碼速度有精度折損 paddlespeech_server start --config_file ./conf/ws_conformer_wenetspeech_application_faster.yaml # 流式識(shí)別客戶端 paddlespeech_client asr_online --server_ip 127.0.0.1 --port 8090 --input ./zh.wav配置要點(diǎn)可參考 demos/streaming_asr_server/conf/ws_conformer_wenetspeech_application.yamlprotocol: websocket、engine_list: [asr_online]引擎asr_online支持model_type: conformer_online_wenetspeech、decode_method: attention_rescoring、continuous_decoding: True端點(diǎn)檢測(cè)后繼續(xù)解碼以及num_decoding_left_chunks控制解碼左看 chunk 數(shù)可調(diào)節(jié)實(shí)時(shí)性與準(zhǔn)確率。從客戶端日志可觀察到識(shí)別結(jié)果逐段增量的過程如我認(rèn)為跑→我認(rèn)為跑步最重要的→完整句子最終消息signal: finished附帶每個(gè)字的起止時(shí)間戳times可用于字幕對(duì)齊日志還會(huì)給出RTF實(shí)時(shí)率指標(biāo)。流式 ASR 還提供了兩個(gè)進(jìn)階腳本聯(lián)合標(biāo)點(diǎn)服務(wù)另起一個(gè)punc_application.yaml配置的標(biāo)點(diǎn)服務(wù)默認(rèn)端口 8190客戶端通過--punc.server_ip/--punc.port同時(shí)調(diào)用兩個(gè)服務(wù)使流式識(shí)別結(jié)果實(shí)時(shí)帶標(biāo)點(diǎn)生成字幕.srt運(yùn)行l(wèi)ocal/websocket_client_srt.py需先安裝 ffmpeg可把 mp3/wav 音頻轉(zhuǎn)寫為帶時(shí)間軸的標(biāo)準(zhǔn).srt字幕文件例如python3 local/websocket_client_srt.py --server_ip 127.0.0.1 --port 8090 --punc.server_ip 127.0.0.1 --punc.port 8190 --wavfile ../../data/認(rèn)知.mp33.3 流式語(yǔ)音合成服務(wù)streaming_tts_serverdemos/streaming_tts_server/README.md 實(shí)現(xiàn)邊說邊合成的流式 TTS 服務(wù)同時(shí)支持http 與 websocket兩種協(xié)議通過配置文件的protocol字段切換。配置文件 demos/streaming_tts_server/conf/tts_online_application.yaml 中engine_list可選tts_onlinePaddle 動(dòng)態(tài)圖推理或tts_online-onnxONNXRuntime 推理速度更快。關(guān)鍵設(shè)計(jì)是分塊chunk推理聲學(xué)模型AM支持fastspeech2_csmsc與fastspeech2_cnndecoder_csmsc含 onnx 版本。其中fastspeech2不支持流式 AM 推理am_pad/am_block不生效而fastspeech2_cnndecoder支持流式am_pad12時(shí)流式合成與整句合成結(jié)果一致。am_block表示一個(gè) chunk 中的有效幀數(shù)am_pad表示 chunk 前后附加的幀數(shù)用于消除流式推理誤差。配置示例am_block: 72、am_pad: 12。聲碼器Voc支持mb_melgan_csmsc與hifigan_csmsc含 onnx 版本。mb_melgan在voc_pad14時(shí)與整句合成一致voc_pad最小可設(shè)為 7聽感正常小于 7 會(huì)出現(xiàn)異常hifigan在voc_pad19時(shí)與整句一致voc_pad14時(shí)聽感正常。配置示例voc_block: 36、voc_pad: 14onnx 引擎還需設(shè)置與聲碼器配置一致的voc_upsample默認(rèn) 300。推理速度上mb_melgan hifigan音質(zhì)上mb_melgan hifigan。啟動(dòng)與調(diào)用# 默認(rèn) http 協(xié)議端口 8092 paddlespeech_server start --config_file ./conf/tts_online_application.yaml # http 客戶端 paddlespeech_client tts_online --server_ip 127.0.0.1 --port 8092 --protocol http --input 您好歡迎使用百度飛槳語(yǔ)音合成服務(wù)。 --output output.wav # websocket 客戶端需先將配置文件的 protocol 改為 websocket paddlespeech_client tts_online --server_ip 127.0.0.1 --port 8092 --protocol websocket --input 您好歡迎使用百度飛槳語(yǔ)音合成服務(wù)。 --output output.wav客戶端參數(shù)server_ip/port、protocolhttp/websocket默認(rèn) http、input必填、spk_id默認(rèn) 0當(dāng)前僅支持單說話人模型該參數(shù)不生效、output、play是否邊合成邊播放依賴 pyaudio 庫(kù)。流式 TTS 不支持改采樣率、變速與音量。服務(wù)日志會(huì)輸出首包響應(yīng)/尾包響應(yīng)/音頻時(shí)長(zhǎng)/RTF等指標(biāo)用于評(píng)估流式合成的實(shí)時(shí)性能。Python 側(cè)使用TTSOnlineClientExecutor。四、復(fù)合場(chǎng)景應(yīng)用多技術(shù)棧組合4.1 大規(guī)模音頻相似度檢索audio_searchingdemos/audio_searching/README.md 是 demos 中架構(gòu)最完整的示例用 PaddleSpeech 預(yù)訓(xùn)練模型說話人識(shí)別等把音頻轉(zhuǎn)成向量存入開源向量數(shù)據(jù)庫(kù) Milvus 并配合 MySQL 存儲(chǔ)元數(shù)據(jù)實(shí)現(xiàn)海量音頻的相似度檢索可用于音效查重、聲紋庫(kù)快速檢索、防欺詐與身份盜用等。4.1.1 組件啟動(dòng)與配置通過 demos/audio_searching/docker-compose.yaml 一鍵啟動(dòng) Milvus 依賴鏈etcd、MinIO、Milvus standalone與 MySQLcd demos/audio_searching/ docker-compose -f docker-compose.yaml up -d成功后會(huì)創(chuàng)建milvus-standalone端口 19530、audio-mysql端口 3306、milvus-etcd、milvus-minio及前端容器audio-webclient映射 8068→80。隨后安裝 Python 依賴并啟動(dòng)后端pip install -r requirements.txt # 本地運(yùn)行可跳過配置遠(yuǎn)端運(yùn)行二選一 vim src/config.py # 或 export MILVUS_HOST127.0.0.1 / export MYSQL_HOST127.0.0.1 export PYTHONPATH$PYTHONPATH:./src python src/audio_search.py # FastAPI 服務(wù)默認(rèn) 0.0.0.0:8002配置參數(shù)詳見 demos/audio_searching/src/config.py參數(shù)說明默認(rèn)值MILVUS_HOSTMilvus 服務(wù) IP127.0.0.1MILVUS_PORTMilvus 端口19530VECTOR_DIMENSION向量維度2048MYSQL_HOSTMySQL IP127.0.0.1MYSQL_PORTMySQL 端口3306DEFAULT_TABLEMilvus/MySQL 默認(rèn)集合名audio_table4.1.2 建庫(kù)、檢索與測(cè)試# 下載 CN-Celeb 數(shù)據(jù)集或改用 Librispeech、VoxCeleb、UrbanSound 等 wget -c https://www.openslr.org/resources/82/cn-celeb_v2.tar.gz tar -xvf cn-celeb_v2.tar.gz # 默認(rèn)模型為 ecapatdnn_voxceleb12如需更換修改 src/encode.py # 一鍵腳本測(cè)試下載數(shù)據(jù) → 加載模型 → 提取 embedding → 建庫(kù) → 檢索 → 刪庫(kù) python ./src/test_audio_search.py從test_audio_search.py的運(yùn)行日志可以看到完整鏈路音頻格式校驗(yàn)16k 采樣率→ 加載預(yù)訓(xùn)練模型ecapatdnn_voxceleb12-16k→ 提取 80 維 Fbank 特征 → backbone 前向得到 192 維 embedding → 批量入庫(kù)Successfully loaded data, total count: 20→ 檢索返回相似音頻及相似度分?jǐn)?shù) → 清空 Milvus 與 MySQL 表。GUI 模式下訪問127.0.0.1:8068可上傳目錄建庫(kù)、上傳.wav檢索相似音頻若瀏覽器與服務(wù)不在同一機(jī)器需同步修改 docker-compose.yaml 中的API_URL并重新執(zhí)行。文檔給出的實(shí)測(cè)結(jié)論機(jī)器為 CentOS 7.6 / E5-2620 v4 / 132G 內(nèi)存數(shù)據(jù)集 CN-Celeb 訓(xùn)練集 65 萬(wàn)條、測(cè)試集 1 萬(wàn)條、向量維度 192、L2 距離在 90% 召回率前提下Milvus 檢索約2.9 ms特征提取約500 ms測(cè)試音頻約 5 秒單條音頻總耗時(shí)約503 ms。預(yù)訓(xùn)練模型為ecapa_tdnn采樣率 16000。4.2 視頻自動(dòng)字幕automatic_video_subtitlesdemos/automatic_video_subtitiles/README.md 用 ASR 標(biāo)點(diǎn)恢復(fù)為視頻生成字幕wget -c https://paddlespeech.cdn.bcebos.com/demos/asr_demos/subtitle_demo1.mp4 # 提取單聲道 16k 的 wav ffmpeg -i subtitle_demo1.mp4 -ac 1 -ar 16000 -vn input.wavPython 側(cè)將ASRExecutor識(shí)別結(jié)果送入TextExecutor的punc任務(wù)最終得到帶標(biāo)點(diǎn)的完整中文轉(zhuǎn)寫。這展示了 PaddleSpeech 任務(wù)間管道組合的典型模式。4.3 數(shù)字人說話metaversedemos/metaverse/README.md 將 PaddleSpeech 的 TTS 與 PaddleGAN 結(jié)合讓圖片中的人物開口說話構(gòu)建 2D 虛擬數(shù)字人./run.sh # 腳本內(nèi)部先 source path.sh 設(shè)置環(huán)境變量并包含安裝步驟替換sentences.txt中的句子可更換口播內(nèi)容替換download/Lamarr.png可更換形象。4.4 故事書朗讀器story_talkerdemos/story_talker/README.md 面向親子閱讀場(chǎng)景用 PaddleOCR 識(shí)別繪本文字再用 PaddleSpeech TTS 朗讀出來./run.sh4.5 FastSpeech2 多風(fēng)格控制style_fs2demos/style_fs2/README.md 利用 FastSpeech2 的可控變量duration、energy、pitch實(shí)現(xiàn)風(fēng)格化語(yǔ)音./run.sh # 內(nèi)部先 source path.sh 設(shè)置環(huán)境變量核心玩法詳見 demos/style_fs2/style_syn.py控制duration可改變語(yǔ)速且保持音高不變部分工具加速會(huì)連帶升高音高將整句pitch設(shè)為均值且音調(diào)置 1 可得到機(jī)器人音色按固定比例抬高成年女性pitch可得到兒童音色還可對(duì)不同音素設(shè)置不同的 duration/pitch 縮放比例來強(qiáng)調(diào)或弱化某些發(fā)音。句子可替換sentences.txt中的內(nèi)容。五、總結(jié)如何選擇適合自己的 demoPaddleSpeech demos 目錄覆蓋了從單命令推理到多組件服務(wù)化部署再到跨模態(tài)復(fù)合應(yīng)用的完整梯度選擇路徑可參考快速體驗(yàn)語(yǔ)音能力從 speech_recognition、text_to_speech、audio_tagging、punctuation_restoration 入手只需安裝 PaddleSpeech 與一條命令需要服務(wù)化/流式能力參考 speech_serverHTTP 多任務(wù)、streaming_asr_serverWebSocket 流式識(shí)別 標(biāo)點(diǎn) srt 字幕、streaming_tts_serverHTTP/WebSocket 流式合成需要工程化檢索/多媒體能力參考 audio_searchingMilvus MySQL 向量檢索、automatic_video_subtitles、story_talker、metaverse、style_fs2需要前沿模型能力參考 speech_sslwav2vec2/HuBERT/WavLM與 whisperWhisper 多語(yǔ)言識(shí)別與翻譯。所有 demo 的輸入音頻原則上都要求與模型采樣率匹配默認(rèn) 16k配置或命令行中的force_yes/yes參數(shù)可接受程序自動(dòng)完成采樣率轉(zhuǎn)換服務(wù)類 demo 建議使用 paddlepaddle 2.4rc 及以上版本且易用easy安裝模式下需要參照各 demo 的conf/目錄自行準(zhǔn)備 yaml 配置文件。對(duì)照本文的配置表與源碼路徑即可快速將對(duì)應(yīng) demo 改造成自己的業(yè)務(wù)方案。【免費(fèi)下載鏈接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.項(xiàng)目地址: https://gitcode.com/paddlepaddle/PaddleSpeech創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考