- Tarayıcı mikrofonunu kullanarak yapay zeka ile doğal sesli konuşmaların gerçek zamanlı olarak yapılabildiği bir sistem
- STT → LLM → TTS akışıyla kullanıcının sesini metne dönüştürür, ardından yapay zeka yanıtını tekrar sese çevirip oynatır
- Temel bileşenler FastAPI sunucusu, WebSocket akışı, Pod tabanlı ses işleme modülü ve çeşitli LLM backend'leridir
- Docker tabanlı dağıtım ortamı sunulur; GPU kullanıldığında daha da düşük gecikme ve performans artışı beklenebilir
- Kullanıcı müdahalesi algılama, model değiştirme, ses seçimi gibi gelişmiş ayar değişiklikleri için son derece özelleştirilebilir bir ortam sunar
Gerçek zamanlı yapay zeka sesli sohbet
- Bu proje, gerçek zamanlı iki yönlü sesli konuşma için tasarlanmış bir istemci-sunucu mimarisidir
- Kullanıcı tarayıcıda konuşur ve yapay zeka yanıtı ses olarak geri döndürür
- Müdahale işleme, kısmi metin yanıtı gösterimi ve farklı TTS seçimleri mümkündür
Temel çalışma akışı
- Ses girişi: Tarayıcıda kullanıcının sesi yakalanır
- Akışla iletim: Ses parçaları WebSocket üzerinden Python backend'ine gönderilir
- Konuşma tanıma:
RealtimeSTT sesi metne dönüştürür
- LLM işleme: Metin LLM'e iletilir ve yanıt üretilir
- Sese dönüştürme:
RealtimeTTS yanıt metnini sese dönüştürür
- Yanıt oynatma: Üretilen ses tekrar tarayıcıya akış olarak gönderilir
- Müdahale algılama: Kullanıcının araya girmesi otomatik olarak algılanır ve işlenir
Başlıca özellikler
- Gerçek zamanlı sesli konuşma ve kısmi transkripsiyon/yanıt önizlemesi
- Düşük gecikme için ses parçası tabanlı akış
- Statik/dinamik sessizlik algılama (turn detection) desteği
- Çeşitli LLM backend'leri: Varsayılan olarak Ollama, isteğe bağlı OpenAI
- Birden fazla TTS motoru desteği: Kokoro, Coqui, Orpheus
- Web arayüzü sunar: Web Audio API tabanlı Vanilla JS UI
- Docker Compose tabanlı dağıtım sunar
Teknoloji yığını
- Backend: Python 3.x, FastAPI
- Frontend: HTML, CSS, JavaScript (Web Audio API)
- İletişim: WebSockets
- Konteynerleştirme: Docker, Docker Compose
- AI/ML kütüphaneleri:
RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
ollama, openai
- Ses işleme:
numpy, scipy
Sistem gereksinimleri ve öneriler
- İşletim sistemi: Linux üzerinde Docker kullanımı önerilir (GPU entegrasyonu açısından avantajlı)
- Python 3.9+, CUDA 12.1 veya üzeri NVIDIA GPU önerilir
- Docker kullanırken NVIDIA Container Toolkit zorunludur
- Gerektiğinde Ollama veya OpenAI API Key ayarlanmalıdır
Kurulum yöntemi
Seçenek A: Docker kurulumu (önerilir)
- Depoyu klonladıktan sonra
docker compose build
docker compose up -d ile uygulamayı ve Ollama'yı başlatın
- Ollama modelini ayrıca indirin (ör.
docker compose exec ollama ollama pull ...)
- Hizmeti durdurma:
docker compose down
- Yeniden başlatma:
docker compose up -d
Seçenek B: Manuel kurulum
- Python venv kurup bağımlılıkları yükleyin
- CUDA sürümüne uygun PyTorch'u manuel olarak kurun
- FastAPI sunucusunu başlatmak için
server.py dosyasını çalıştırın
Çalıştırma yöntemi
- Tarayıcıda
http://localhost:8000 adresine gidin
- Mikrofon iznini verdikten sonra "Start"a tıklayın
- Sonlandırmak için "Stop", konuşmayı sıfırlamak için "Reset"
Ayar değiştirme rehberi
- TTS motoru/ses değiştirme:
server.py, audio_module.py içinde düzenleyin
- LLM modeli/backend değiştirme:
server.py, llm_module.py içinde ayarlayın
- STT modeli/sessizlik eşiği değiştirme:
transcribe.py, turndetect.py
- SSL yapılandırması mümkündür:
server.py içinde HTTPS kullanımı ve sertifika ayarları
Lisans
- MIT lisansı ile yayımlanmıştır
- Coqui gibi harici motorlar için ayrı lisanslar geçerlidir
2 yorum
Orijinaldeki demo videosu etkileyici.
Hacker News görüşü
RealtimeVoiceChat'ı geliştirme nedeni, çoğu sesli yapay zeka etkileşimindeki gecikmenin tatmin edici olmamasıymış. Bu sistem, gerçek zamanlı ve yerel sesli konuşmalar için tasarlanmış açık kaynaklı bir sistemdir
Bu tür araçların bir kullanıcısı olarak, hızlı olsa da doğal konuşmadaki duraklamalara izin vermiyor
Çok havalı! Bölme özelliği "vay be" anıydı (yeni bir şey değil ama bunun açık kaynakta bu kadar iyi uygulanmış olduğunu görmek şaşırtıcı)
Yaklaşık 1 yıl önce bu konu üzerine araştırma yapmıştım. Birkaç ilginç şey öğrendim
Harika. Kaynağa baktığımda, yazarın Silero VAD yerine özel bir sıra algılama stratejisi uygulamış olması ilginç geldi. Bunu neden yaptığı ve ne gibi avantajlar gözlemlediği merak konusu
LLM'lerin daha kısa yanıtlar için ayarlanması gerektiğini düşünmeye başlıyorum. Kısa bir cümle giriyorsunuz, uzun paragraf paragraf metin veriyor
Kimsenin bundan bahsetmemiş olmasına şaşırdım. İnsan gibi etkileşime giriyor ve yeterli bağlam olduğunda birçok durumda sözümü kesiyor. Gecikmesi çok düşük
Oldukça iyi. Eğer SOTA düzeyinde bir ses gibi gelse çok daha iyi olurdu
Etkileyici! Şu anda mevcut açık kaynak seçenekler arasında en iyi konuşma sentezi kalitesi olduğunu düşünüyorum
Benzer bir şey üzerinde çalışıyordum ve buna rastladım. Harika iş. Demoyu beğendim