
Dieses Repository implementiert eine kaskadierte Sprach-zu-Speech-Pipeline, die aus den folgenden Teilen besteht:
Die Pipeline bietet einen vollständig geöffneten und modularen Ansatz, wobei der Schwerpunkt darauf ist, Modelle zu nutzen, die über die Transformers Library in der Umarmungs -Face -Hub verfügbar sind. Der Code ist für eine einfache Änderung ausgelegt und wir unterstützen bereits Gerätespezifische und externe Bibliotheksimplementierungen:
Vad
Stt
Llm
TTS
Klonen Sie das Repository:
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speechInstallieren Sie die erforderlichen Abhängigkeiten mit UV:
uv pip install -r requirements.txt Verwenden Sie für Mac -Benutzer stattdessen die Datei requirements_mac.txt :
uv pip install -r requirements_mac.txtWenn Sie Melo TTS verwenden möchten, müssen Sie auch ausführen:
python -m unidic downloadDie Pipeline kann auf zwei Arten ausgeführt werden:
Führen Sie die Pipeline auf dem Server aus:
python s2s_pipeline.py --recv_host 0.0.0.0 --send_host 0.0.0.0Führen Sie den Client lokal aus, um die Mikrofoneingabe zu verarbeiten und generierte Audio zu empfangen:
python listen_and_play.py --host < IP address of your server >python s2s_pipeline.py --local_mac_optimal_settingsDiese Einstellung:
--device mps für alle Modelle verwenden MPS.https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
docker compose up
Hebelfackelkompilierung für Whisper und Parler-TTs. Die Verwendung von Parler-TTs ermöglicht das Streaming von Audioausgängen, wodurch die Overall-Latenz verringert wird :
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 Im Moment sind Modi, die CUDA-Diagramme erfassen, nicht mit Streaming-Parler-TTs ( reduce-overhead , max-autotune ) kompatibel.
Die Pipeline unterstützt derzeit Englisch, Französisch, Spanisch, Chinesisch, Japanisch und Koreanisch.
Zwei Anwendungsfälle werden berücksichtigt:
--language Flag, Angabe des Zielsprachcode (Standard ist 'EN').--language zu 'Auto'. In diesem Fall erkennt Whisper die Sprache für jede gesprochene Eingabeaufforderung, und das LLM wird mit " Please reply to my message in ... " auf, um sicherzustellen, dass die Antwort in der erkannten Sprache liegt.Bitte beachten Sie, dass Sie STT- und LLM -Checkpoints verwenden müssen, die mit der Zielsprache (en) kompatibel sind. Für den STT-Teil ist Parler-TTS noch nicht mehrsprachig (obwohl diese Funktion bald kommt!?). In der Zwischenzeit sollten Sie Melo (das Englisch, Französisch, Spanisch, Chinesisch, Japanisch und Koreanisch unterstützt) oder Chat-TTs verwenden.
Für automatische Spracherkennung:
python s2s_pipeline.py
--stt_model_name large-v3
--language auto
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct Oder insbesondere für eine Sprache, Chinesen in diesem Beispiel
python s2s_pipeline.py
--stt_model_name large-v3
--language zh
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct Für automatische Spracherkennung:
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 Oder insbesondere für eine Sprache, Chinesen in diesem Beispiel
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 Hinweis: Referenzen für alle CLI -Argumente finden Sie direkt in den Argumenteklassen oder durch Ausführen von
python s2s_pipeline.py -h.
Siehe Klasse der Moduleargumente. Ermöglicht das Festlegen:
--device (wenn man möchte, dass jeder Teil auf demselben Gerät ausgeführt wird)--mode local oder serverSiehe Klasse Vadhandlerargumente. Vor allem:
--thresh : Schwellenwert, um die Erkennung der Sprachaktivität auszulösen.--min_speech_ms : minimale Dauer der erkannten Sprachaktivität, die als Sprache betrachtet werden soll.--min_silence_ms : Mindestlänge der Stilleintervalle für die Segmentierung der Sprache, das Ausgleich von Satzschnitten und Latenzreduzierung. model_name , torch_dtype und device sind für jede Implementierung der Sprache zu Text, Sprachmodell und Text zur Sprache freigelegt. Geben Sie den gezielten Pipeline -Teil mit dem entsprechenden Präfix an (z. B. stt , lm oder tts finden Sie die Argumente der Implementierungen für weitere Details).
Zum Beispiel:
--lm_model_name google/gemma-2b-it Andere Generationsparameter der Generate -Methode des Modells können mit dem Präfix des Teils + _gen_ , z. B. --stt_gen_max_new_tokens 128 festgelegt werden. Diese Parameter können der Argumenteklasse des Pipeline -Teils hinzugefügt werden, wenn sie nicht bereits freigelegt sind.
@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} }
}