
Этот репозиторий реализует каскадный трубопровод речи к речи, состоящий из следующих частей:
Трубопровод обеспечивает полностью открытый и модульный подход, с акцентом на использование моделей, доступных через библиотеку Transformers в узле, обнимающееся лицо. Код предназначен для легкой модификации, и мы уже поддерживаем конкретные и внешние реализации библиотеки:
Вал
Stt
LLM
ТТС
Клонировать репозиторий:
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speechУстановите требуемые зависимости с помощью УФ:
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 для использования MP для всех моделей.https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
docker compose up
Используйте факел компиляции для шепота и Parler-TTS. Использование Parler-TTS позволяет транслировать аудио-вывод, и Fore Dustucting Lovereall Latency :
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 (который поддерживает английский, французский, испанский, китайский, японский и корейский) или чат-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} }
}