- ระบบที่ใช้ไมโครโฟนของเบราว์เซอร์เพื่อให้สามารถ สนทนาเสียงกับ AI ได้อย่างเป็นธรรมชาติ แบบเรียลไทม์
- ใช้ลำดับการทำงาน STT → LLM → TTS เพื่อแปลงเสียงของผู้ใช้เป็นข้อความ และแปลงคำตอบของ AI กลับเป็นเสียงเพื่อเล่น
- องค์ประกอบหลักคือ เซิร์ฟเวอร์ FastAPI, การสตรีมผ่าน WebSocket, โมดูลประมวลผลเสียงแบบอิง Pod และแบ็กเอนด์ LLM ที่หลากหลาย
- มี สภาพแวดล้อมการดีพลอยแบบอิง Docker ให้ใช้งาน และหากใช้ GPU ก็สามารถคาดหวังความหน่วงที่ต่ำลงและประสิทธิภาพที่ดีขึ้นได้
- มีสภาพแวดล้อมที่ปรับแต่งได้สูง รองรับ การตรวจจับการขัดจังหวะของผู้ใช้ การสลับโมเดล และการเลือกเสียง รวมถึงการเปลี่ยนการตั้งค่าขั้นสูง
แชตเสียง AI แบบเรียลไทม์
- โปรเจกต์นี้เป็น สถาปัตยกรรมแบบไคลเอนต์-เซิร์ฟเวอร์ ที่ออกแบบมาสำหรับ การสนทนาเสียงสองทางแบบเรียลไทม์
- ผู้ใช้พูดผ่านเบราว์เซอร์ และ AI จะ ตอบกลับเป็นเสียง
- รองรับการจัดการการขัดจังหวะ การแสดงข้อความตอบกลับบางส่วน และการเลือก TTS ได้หลายแบบ
ลำดับการทำงานหลัก
- รับเสียงเข้า: จับเสียงของผู้ใช้จากเบราว์เซอร์
- ส่งแบบสตรีมมิง: ส่งออดิโอชังก์ไปยังแบ็กเอนด์ Python ผ่าน WebSocket
- รู้จำเสียงพูด:
RealtimeSTT แปลงเสียงเป็นข้อความ
- ประมวลผลด้วย LLM: ส่งข้อความไปยัง LLM เพื่อสร้างคำตอบ
- แปลงเป็นเสียง:
RealtimeTTS แปลงข้อความคำตอบเป็นเสียง
- เล่นคำตอบกลับ: สตรีมเสียงที่สร้างแล้วกลับไปยังเบราว์เซอร์
- ตรวจจับการขัดจังหวะ: ตรวจจับและจัดการการพูดแทรกของผู้ใช้โดยอัตโนมัติ
ฟีเจอร์หลัก
- การสนทนาเสียงแบบเรียลไทม์ และ พรีวิวการถอดเสียง/คำตอบบางส่วน
- การสตรีมแบบอิงออดิโอชังก์เพื่อ ความหน่วงต่ำ
- รองรับ การตรวจจับความเงียบแบบคงที่/แบบไดนามิก (turn detection)
- แบ็กเอนด์ LLM ที่หลากหลาย: ใช้ Ollama เป็นค่าเริ่มต้น และเลือก OpenAI ได้
- รองรับหลาย TTS engine: Kokoro, Coqui, Orpheus
- มีเว็บอินเทอร์เฟซ: UI แบบ Vanilla JS ที่อิง Web Audio API
- รองรับการดีพลอยด้วย Docker Compose
เทคโนโลยีสแต็ก
- แบ็กเอนด์: Python 3.x, FastAPI
- ฟรอนต์เอนด์: HTML, CSS, JavaScript (Web Audio API)
- การสื่อสาร: WebSockets
- คอนเทนเนอร์ไรเซชัน: Docker, Docker Compose
- ไลบรารี AI/ML:
RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
ollama, openai
- การประมวลผลเสียง:
numpy, scipy
ความต้องการของระบบและคำแนะนำ
- ระบบปฏิบัติการ: แนะนำให้ใช้ Docker บน Linux (เหมาะกับการรวม GPU มากกว่า)
- แนะนำ Python 3.9+ และ NVIDIA GPU ที่รองรับ CUDA 12.1 ขึ้นไป
- หากใช้ Docker จำเป็นต้องมี NVIDIA Container Toolkit
- ต้องตั้งค่า Ollama หรือ OpenAI API Key หากจำเป็น
วิธีติดตั้ง
ตัวเลือก A: ติดตั้งด้วย Docker (แนะนำ)
- โคลนรีโพซิทอรีแล้วรัน
docker compose build
- เริ่มแอปและ Ollama ด้วย
docker compose up -d
- ดาวน์โหลดโมเดล Ollama แยกต่างหาก (เช่น
docker compose exec ollama ollama pull ...)
- ปิดบริการ:
docker compose down
- เริ่มใหม่:
docker compose up -d
ตัวเลือก B: ติดตั้งแบบแมนนวล
- ตั้งค่า Python venv แล้วติดตั้ง dependency
- ติดตั้ง PyTorch ด้วยตนเองให้ตรงกับเวอร์ชัน CUDA
- รัน
server.py เพื่อเริ่มเซิร์ฟเวอร์ FastAPI
วิธีใช้งาน
- เปิด
http://localhost:8000 ในเบราว์เซอร์
- อนุญาตสิทธิ์ไมโครโฟนแล้วคลิก "Start"
- คลิก "Stop" เพื่อจบ และ "Reset" เพื่อรีเซ็ตบทสนทนา
คำแนะนำการเปลี่ยนการตั้งค่า
- เปลี่ยน TTS engine/เสียง: แก้ไขที่
server.py, audio_module.py
- เปลี่ยนโมเดล/แบ็กเอนด์ LLM: ตั้งค่าที่
server.py, llm_module.py
- เปลี่ยนโมเดล STT/เกณฑ์ความเงียบ:
transcribe.py, turndetect.py
- รองรับการตั้งค่า SSL: ตั้งค่าการใช้ HTTPS และใบรับรองได้ใน
server.py
ใบอนุญาต
- เผยแพร่ภายใต้ใบอนุญาต MIT
- เอนจินภายนอกอย่าง Coqui ใช้ใบอนุญาตแยกต่างหาก
2 ความคิดเห็น
วิดีโอเดโมต้นฉบับน่าประทับใจมาก
ความเห็นบน Hacker News
เหตุผลที่พัฒนา RealtimeVoiceChat คือเวลาหน่วงของการโต้ตอบกับ AI เสียงส่วนใหญ่ยังไม่น่าพอใจ ระบบนี้เป็นโอเพนซอร์สที่ออกแบบมาสำหรับการสนทนาด้วยเสียงแบบเรียลไทม์บนเครื่อง
ในฐานะผู้ใช้เครื่องมือแบบนี้ มันเร็วก็จริง แต่ไม่ยอมให้มีช่วงหยุดเวลาพูดตามธรรมชาติ
เจ๋งมาก! ฟีเจอร์ขัดจังหวะคือช่วง "ว้าว" (ไม่ใช่ของใหม่ แต่การได้เห็นโอเพนซอร์สทำได้ดีขนาดนี้น่าทึ่งมาก)
เคยทำวิจัยเรื่องนี้เมื่อประมาณ 1 ปีก่อน และได้เรียนรู้ข้อเท็จจริงน่าสนใจหลายอย่าง
ยอดเยี่ยมมาก พอดูซอร์สแล้วรู้สึกว่าน่าสนใจที่ผู้เขียนเลือกทำกลยุทธ์ตรวจจับจังหวะการพูดแบบกำหนดเองแทน Silero VAD อยากรู้ว่าทำแบบนี้ทำไม และเห็นข้อดีอะไรบ้าง
เริ่มรู้สึกว่า LLMs ควรถูกปรับแต่งให้ตอบสั้นลง อินพุตเป็นประโยคสั้น ๆ แต่กลับได้ข้อความยาวเป็นย่อหน้า
แปลกใจที่ยังไม่มีใครพูดถึงเรื่องนี้ มันโต้ตอบเหมือนมนุษย์ และจะพูดแทรกฉันในหลายสถานการณ์เมื่อมีบริบทพอ แถมค่าหน่วงยังต่ำมาก
ดีใช้ได้เลย ถ้าเสียงฟังเป็น SOTA มากกว่านี้จะยิ่งดีมาก
น่าประทับใจ! คิดว่านี่คือคุณภาพการสังเคราะห์เสียงที่ดีที่สุดในบรรดาโอเพนซอร์สที่มีตอนนี้
กำลังทำอะไรคล้าย ๆ กันอยู่แล้วมาเจอสิ่งนี้ งานยอดเยี่ยมมาก ชอบเดโมนี้