
Repositori ini mengimplementasikan pipa cascaded ucapan-ke-pidato yang terdiri dari bagian-bagian berikut:
Pipa ini memberikan pendekatan yang sepenuhnya terbuka dan modular, dengan fokus pada model leveraging yang tersedia melalui pustaka Transformers di hub wajah pelukan. Kode ini dirancang untuk modifikasi yang mudah, dan kami sudah mendukung implementasi perpustakaan khusus dan eksternal perangkat:
Vad
Stt
Llm
Tts
Klon Repositori:
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speechInstal dependensi yang diperlukan menggunakan UV:
uv pip install -r requirements.txt Untuk pengguna Mac, gunakan file requirements_mac.txt sebagai gantinya:
uv pip install -r requirements_mac.txtJika Anda ingin menggunakan Melo TTS, Anda juga perlu menjalankan:
python -m unidic downloadPipa dapat dijalankan dengan dua cara:
Jalankan pipa di server:
python s2s_pipeline.py --recv_host 0.0.0.0 --send_host 0.0.0.0Jalankan klien secara lokal untuk menangani input mikrofon dan menerima audio yang dihasilkan:
python listen_and_play.py --host < IP address of your server >python s2s_pipeline.py --local_mac_optimal_settingsPengaturan ini:
--device mps untuk menggunakan anggota parlemen untuk semua model.https://docs.nvidia.com/datacenter/cloud-native/container--toolkit/latest/install-guide.html
docker compose up
Leverage Torch Compile untuk Whisper dan Parler-TTS. Penggunaan Parler-TTS memungkinkan streaming output audio, lebih rendah mengurangi latensi yang berlebihan :
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 Untuk saat ini, mode yang menangkap grafik CUDA tidak kompatibel dengan streaming Parler-TTS ( reduce-overhead , max-autotune ).
Pipa saat ini mendukung bahasa Inggris, Prancis, Spanyol, Cina, Jepang, dan Korea.
Dua kasus penggunaan dipertimbangkan:
--language , Menentukan Kode Bahasa Target (default adalah 'en').--language ke 'Auto'. Dalam hal ini, Whisper mendeteksi bahasa untuk setiap prompt yang diucapkan, dan LLM diminta dengan " Please reply to my message in ... " untuk memastikan tanggapan dalam bahasa yang terdeteksi.Harap dicatat bahwa Anda harus menggunakan pos pemeriksaan STT dan LLM yang kompatibel dengan bahasa target. Untuk bagian STT, Parler-TTS belum multibahasa (meskipun fitur itu akan segera hadir!?). Sementara itu, Anda harus menggunakan Melo (yang mendukung bahasa Inggris, Prancis, Spanyol, Cina, Jepang, dan Korea) atau Chat-TTS.
Untuk deteksi bahasa otomatis:
python s2s_pipeline.py
--stt_model_name large-v3
--language auto
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct Atau untuk satu bahasa khususnya, bahasa Cina dalam contoh ini
python s2s_pipeline.py
--stt_model_name large-v3
--language zh
--mlx_lm_model_name mlx-community/Meta-Llama-3.1-8B-Instruct Untuk deteksi bahasa otomatis:
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 Atau untuk satu bahasa khususnya, bahasa Cina dalam contoh ini
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 Catatan: Referensi untuk semua argumen CLI dapat ditemukan secara langsung di kelas argumen atau dengan menjalankan
python s2s_pipeline.py -h.
Lihat Kelas Modulearguments. Memungkinkan untuk mengatur:
--device (jika seseorang ingin setiap bagian berjalan pada perangkat yang sama)--mode local atau serverLihat kelas VadhandlerArguments. Terutama:
--thresh : Nilai ambang batas untuk memicu deteksi aktivitas suara.--min_speech_ms : Durasi minimum aktivitas suara yang terdeteksi untuk dipertimbangkan.--min_silence_ms : Panjang minimum interval keheningan untuk segmentasi pidato, penyeimbang pemotongan kalimat dan pengurangan latensi. model_name , torch_dtype , dan device diekspos untuk setiap implementasi pidato untuk teks, model bahasa, dan teks untuk berbicara. Tentukan bagian pipa yang ditargetkan dengan awalan yang sesuai (misalnya stt , lm atau tts , periksa kelas argumen implementasi untuk rincian lebih lanjut).
Misalnya:
--lm_model_name google/gemma-2b-it Parameter generasi lain dari metode generat model dapat diatur menggunakan awalan bagian + _gen_ , misalnya, --stt_gen_max_new_tokens 128 . Parameter ini dapat ditambahkan ke kelas argumen bagian pipa jika belum diekspos.
@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} }
}