
該存儲庫實現了語音到語音的級聯管道,該管道由以下部分組成:
該管道提供了一種完全開放的模塊化方法,重點是通過擁抱面輪上的變形金剛庫可用的模型。該代碼設計用於易於修改,我們已經支持特定於設備的和外部庫的實現:
vad
stt
LLM
TTS
克隆存儲庫:
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speech使用UV安裝所需的依賴項:
uv pip install -r requirements.txt對於Mac用戶,請改用requirements_mac.txt文件:
uv pip install -r requirements_mac.txt如果要使用Melo TTS,也需要運行:
python -m unidic download管道可以通過兩種方式運行:
在服務器上運行管道:
python s2s_pipeline.py --recv_host 0.0.0.0 --send_host 0.0.0.0在本地運行客戶端以處理麥克風輸入並接收生成的音頻:
python listen_and_play.py --host < IP address of your server >python s2s_pipeline.py --local_mac_optimal_settings此設置:
--device mps將MPS用於所有型號。https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
docker compose up
利用Torch彙編的小聲說話和Parler-TTS。 Parler-TTS的使用允許音頻輸出流,從而降低了超級延遲:
python s2s_pipeline.py
--lm_model_name microsoft/Phi-3-mini-4k-instruct
--stt_compile_mode reduce-overhead
--tts_compile_mode default
--recv_host 0.0.0.0
--send_host 0.0.0.0 目前,捕獲CUDA圖的模式與流parler-tts不兼容( reduce-overhead , max-autotune )。
該管道目前支持英語,法語,西班牙語,中文,日語和韓語。
考慮了兩種用例:
--language標誌來執行語言設置,指定目標語言代碼(默認為'en')。--language為“自動”。在這種情況下,Whisper檢測到每個口語提示的語言,LLM的提示是“ Please reply to my message in ... ”,以確保響應使用被檢測到的語言。請注意,您必須使用與目標語言兼容的STT和LLM檢查點。對於STT部分,Parler-TTS尚未多語言(儘管該功能即將推出!?)。同時,您應該使用MELO(支持英語,法語,西班牙語,中文,日語和韓語)或CHAT-TTS。
用於自動語言檢測:
python s2s_pipeline.py
--stt_model_name large-v3
--language auto
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct 或尤其是一種語言,在此示例中中文
python s2s_pipeline.py
--stt_model_name large-v3
--language zh
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct 用於自動語言檢測:
python s2s_pipeline.py
--local_mac_optimal_settings
--device mps
--stt_model_name large-v3
--language auto
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct-4bit 或尤其是一種語言,在此示例中中文
python s2s_pipeline.py
--local_mac_optimal_settings
--device mps
--stt_model_name large-v3
--language zh
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct-4bit 注意:所有CLI參數的參考可以直接在參數類中或通過運行
python s2s_pipeline.py -h找到。
請參閱Modulearguments類。允許設置:
--device (如果希望每個零件在同一設備上運行)--mode local或server請參閱vadhandlerarguments類。尤其:
--thresh :觸發語音活動檢測的閾值值。--min_speech_ms :被視為語音的檢測到的語音活動的最小持續時間。--min_silence_ms :靜音間隔的最小長度,用於分割語音,平衡句子切割和減少延遲。對於文本,語言模型和語音文本的每個實現, model_name , torch_dtype和device都會暴露出來。用相應的前綴(例如stt , lm或tts指定目標管道部分,檢查實現的參數類以獲取更多詳細信息)。
例如:
--lm_model_name google/gemma-2b-it可以使用零件的前綴 + _gen_ ,例如, --stt_gen_max_new_tokens 128設置模型生成方法的其他生成參數。如果尚未公開,可以將這些參數添加到管道部分的參數類中。
@misc { Silero VAD,
author = { Silero Team } ,
title = { Silero VAD: pre-trained enterprise-grade Voice Activity Detector (VAD), Number Detector and Language Classifier } ,
year = { 2021 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/snakers4/silero-vad} } ,
commit = { insert_some_commit_here } ,
email = { hello @ silero.ai }
} @misc { gandhi2023distilwhisper ,
title = { Distil-Whisper: Robust Knowledge Distillation via Large-Scale Pseudo Labelling } ,
author = { Sanchit Gandhi and Patrick von Platen and Alexander M. Rush } ,
year = { 2023 } ,
eprint = { 2311.00430 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
} @misc { lacombe-etal-2024-parler-tts ,
author = { Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi } ,
title = { Parler-TTS } ,
year = { 2024 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/huggingface/parler-tts} }
}