
이 저장소는 다음 부분으로 구성된 음성 음성 계단식 파이프 라인을 구현합니다.
이 파이프 라인은 Hugging Face Hub의 Transformers 라이브러리를 통해 사용 가능한 모델을 활용하는 데 중점을 둔 완전히 개방적이고 모듈 식 접근 방식을 제공합니다. 이 코드는 쉽게 수정할 수 있도록 설계되었으며 이미 장치 별 및 외부 라이브러리 구현을 지원합니다.
vad
stt
LLM
TTS
저장소 복제 :
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speechUV를 사용하여 필요한 종속성을 설치하십시오.
uv pip install -r requirements.txt Mac 사용자의 경우 대신 requirements_mac.txt 파일을 사용하십시오.
uv pip install -r requirements_mac.txtmelo 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 추가합니다.https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
docker compose up
Whisper 및 Parler-TTS를 위해 Torch 컴파일을 활용하십시오. Parler-TTS의 사용은 오디오 출력 스트리밍을 허용하여 OvereAll 대기 시간을 줄입니다 .
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 그래프를 캡처하는 모드는 스트리밍 파러 TT ( reduce-overhead , max-autotune )와 호환되지 않습니다.
파이프 라인은 현재 영어, 프랑스어, 스페인어, 중국어, 일본어 및 한국을 지원합니다.
두 가지 사용 사례가 고려됩니다.
--language 플래그를 사용하여 언어 설정을 시행하고 대상 언어 코드를 지정합니다 (기본값은 'en').--language '자동'으로 설정하십시오. 이 경우 Whisper는 각 음성 프롬프트에 대한 언어를 감지하고 LLM에는 응답이 감지 된 언어로 보장하기 위해 " Please reply to my message in ... "라는 메시지가 표시됩니다.대상 언어와 호환되는 STT 및 LLM 체크 포인트를 사용해야합니다. STT 부품의 경우 Parler-TTS는 아직 다국어가 아닙니다 (해당 기능이 곧 제공됩니다!?). 그 동안 Melo (영어, 프랑스어, 스페인어, 중국어, 일본어 및 한국어) 또는 채팅 TT를 지원해야합니다.
자동 언어 탐지 :
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 또는 servervadhandlerarguments 클래스를 참조하십시오. 특히 :
--thresh : 음성 활동 감지를 트리거하기위한 임계 값.--min_speech_ms : 언어로 간주되는 감지 된 음성 활동의 최소 지속 시간.--min_silence_ms : 말하기, 문장 절단 균형 균형을 잡기위한 최소 침묵 간격. model_name , torch_dtype 및 device 텍스트, 언어 모델 및 텍스트로의 음성을 구현할 때마다 노출됩니다. 해당 접두사 (예 : stt , lm 또는 tts , 자세한 내용은 구현 인수 클래스를 확인하십시오)로 대상 파이프 라인 부분을 지정하십시오.
예를 들어:
--lm_model_name google/gemma-2b-it 모델 생성 메소드의 다른 생성 매개 변수는 Part의 접두사 + _gen_ , eg, --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} }
}