VoiceStreamAI adalah server berbasis Python 3 dan solusi klien JavaScript yang memungkinkan streaming audio dan transkripsi hampir real-time menggunakan WebSocket. Sistem ini menggunakan Deteksi Aktivitas Suara (VAD) Huggingface dan model Whisper OpenAI (bisikan lebih cepat sebagai defaultnya) untuk pengenalan dan pemrosesan ucapan yang akurat.
Ini tidak akan memandu Anda secara detail tentang cara menggunakan CUDA di buruh pelabuhan, lihat misalnya di sini.
Namun, ini adalah perintah untuk Linux:
distribution= $( . /etc/os-release ; echo $ID$VERSION_ID )
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&& curl -s -L https://nvidia.github.io/libnvidia-container/ $distribution /libnvidia-container.list |
sed ' s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g ' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Anda dapat membuat gambar container dengan:
sudo docker build -t VoiceStreamAI .
Setelah menjalankan token VAD Anda (lihat bagian selanjutnya):
sudo docker volume create huggingface_models
sudo docker run --gpus all -p 8765:8765 -v huggingface_models:/root/.cache/huggingface -e PYANNOTE_AUTH_TOKEN= ' VAD_TOKEN_HERE ' VoiceStreamAI
Hal "volume" akan memungkinkan Anda untuk tidak mengunduh ulang model pelukan setiap kali Anda menjalankan kembali penampung. Jika Anda tidak membutuhkannya, cukup gunakan:
sudo docker run --gpus all -p 8765:8765 -e PYANNOTE_AUTH_TOKEN= ' VAD_TOKEN_HERE ' VoiceStreamAI
Untuk menyiapkan server VoiceStreamAI , Anda memerlukan Python 3.8 atau lebih baru dan paket berikut:
transformers
pyannote.core
pyannote.audio
websockets
asyncio
sentence-transformers
faster-whisper
Instal paket-paket ini menggunakan pip:
pip install -r requirements.txt
Untuk sisi klien, Anda memerlukan browser web modern dengan dukungan JavaScript.
Server VoiceStreamAI dapat dikustomisasi melalui argumen baris perintah, memungkinkan Anda menentukan pengaturan komponen, host, dan port sesuai kebutuhan Anda.
--vad-type
: Menentukan jenis alur Deteksi Aktivitas Suara (VAD) yang akan digunakan (default: pyannote
) .--vad-args
: String JSON yang berisi argumen tambahan untuk alur VAD. (diperlukan untuk pyannote
: '{"auth_token": "VAD_AUTH_HERE"}'
)--asr-type
: Menentukan jenis alur Pengenalan Ucapan Otomatis (ASR) yang akan digunakan (default: faster_whisper
).--asr-args
: String JSON yang berisi argumen tambahan untuk pipeline ASR (misalnya, seseorang dapat mengubah model_name
menjadi Whisper)--host
: Menetapkan alamat host untuk server WebSocket ( default: 127.0.0.1
).--port
: Menyetel port tempat server mendengarkan (default: 8765
).--certfile
: Jalur ke sertifikat SSL (file cert) jika menggunakan soket web aman (default: None
)--keyfile
: Jalur ke file kunci SSL jika menggunakan soket web aman ( default: None
)Untuk menjalankan server dengan konfigurasi standar:
python3 -m src.main --vad-args ' {"auth_token": "vad token here"} '
Anda dapat melihat semua opsi baris perintah dengan perintah:
python3 -m src.main --help
client/index.html
di browser web.ws://localhost:8765
).Komponen VAD dan ASR dapat dengan mudah diperluas untuk mengintegrasikan teknik baru dan menggunakan model dengan antarmuka yang berbeda dari pipeline HuggingFace. Strategi pemrosesan/pemisahan baru dapat ditambahkan di server.py, dan digunakan oleh klien tertentu yang menyetel kunci "strategi_pemrosesan" di konfigurasi.
Deteksi Aktivitas Suara (VAD) di VoiceStreamAI memungkinkan sistem membedakan antara segmen ucapan dan non-ucapan dalam aliran audio. Tujuan utama penerapan VAD adalah untuk meningkatkan efisiensi dan keakuratan proses ucapan-ke-teks:
VoiceStreamAI menggunakan model Huggingface VAD untuk memastikan deteksi ucapan yang andal dalam beragam kondisi audio.
Strategi buffering dirancang untuk menyeimbangkan antara pemrosesan yang hampir real-time dan memastikan penangkapan segmen ucapan yang lengkap dan akurat. Berikut cara pengelolaan buffering:
Di VoiceStreamAI , setiap klien dapat memiliki konfigurasi unik yang menyesuaikan proses transkripsi dengan kebutuhan spesifik mereka. Penyiapan yang dipersonalisasi ini dicapai melalui sistem pesan tempat klien JavaScript mengirimkan detail konfigurasi ke server Python. Bagian ini menjelaskan bagaimana konfigurasi ini disusun dan ditransmisikan.
Konfigurasi klien dapat mencakup berbagai parameter seperti preferensi bahasa, panjang potongan, dan offset potongan. Misalnya:
language
: Menentukan bahasa untuk transkripsi. Jika disetel ke selain "multibahasa", ini akan memaksa inferensi Whisper menggunakan bahasa tersebutprocessing_strategy
: Menentukan jenis pemrosesan untuk klien ini, semacam pola strategi. Strategi untuk saat ini tidak menggunakan OOP tetapi diimplementasikan dalam if/else di server.pychunk_length_seconds
: Menentukan panjang setiap potongan audio yang akan diproseschunk_offset_seconds
: Menentukan waktu hening di akhir setiap potongan yang diperlukan untuk memproses audio (digunakan oleh strategi_pemrosesan nr 1).Inisialisasi : Saat klien menginisialisasi koneksi dengan server, klien dapat mengirim pesan konfigurasi secara opsional. Pesan ini adalah objek JSON yang berisi pasangan nilai kunci yang mewakili pengaturan pilihan klien.
Pengaturan Klien JavaScript : Pada klien demo, konfigurasi dikumpulkan dari elemen antarmuka pengguna (seperti dropdown dan kolom input). Setelah Audio mulai mengalir, objek JSON dibuat dan dikirim ke server melalui WebSocket. Misalnya:
function sendAudioConfig ( ) {
const audioConfig = {
type : "config" ,
data : {
chunk_length_seconds : 5 ,
chunk_offset_seconds : 1 ,
processing_strategy : 1 ,
language : language ,
} ,
} ;
websocket . send ( JSON . stringify ( audioConfig ) ) ;
}
Saat menerapkan Strategi ASR, Vad, atau Buffering baru, Anda dapat mengujinya dengan:
pip install -r requirements-dev.txt
export PYANNOTE_AUTH_TOKEN= < VAD_TOKEN_HERE >
ASR_TYPE=faster_whisper python -m unittest test.server.test_server
Harap pastikan bahwa variabel akhir sudah ada, misalnya untuk token autentikasi VAD. Beberapa pengujian lain juga sedang dilakukan, misalnya untuk ASR mandiri.
Saat ini, VoiceStreamAI memproses audio dengan menyimpan potongan ke file dan kemudian menjalankan file tersebut melalui model.
Garpu dan kloning repositori ini. Instal dependensi dan alat terkait.
pip install -r requirements.txt
pip install -r requirements-dev.txt
npm install -g [email protected] [email protected]
Tambahkan modifikasi Anda ke repositori dan jalankan pemeriksaan gaya kode secara manual, atau integrasikan ke dalam IDE/editor Anda.
# For Python
flake8 src/ test/
black --line-length 79 src/ test/
isort src/ test/
# For JavaScript
jshint client/ * .js
eslint client/ * .js
Terakhir, dorong dan buat permintaan tarik.
Proyek ini terbuka untuk kontribusi. Jangan ragu untuk membagi repositori dan mengirimkan permintaan penarikan.