อ่านแชตสดออกเสียงด้วยเสียง AI ภายในเครื่อง เริ่มจากตัวเลือกที่ไม่ต้องติดตั้ง แล้วใช้เซิร์ฟเวอร์ภายในเครื่องเมื่อจำเป็นเท่านั้น
Social Stream Ninja อ่านข้อความแชตออกเสียงได้ด้วย AI แปลงข้อความเป็นเสียงพูดภายในเครื่อง คำว่า "ภายในเครื่อง" หมายถึงได้สองอย่าง: เสียงทำงานในเบราว์เซอร์ หรือคุณเรียกใช้เซิร์ฟเวอร์ TTS ขนาดเล็กบนคอมพิวเตอร์ของตัวเอง
มีสองแนวทาง:
มีเสียง AI คุณภาพสูงหลายเสียงที่ มีอยู่ใน Social Stream Ninja โดยตรง ทั้งหมดทำงานในเบราว์เซอร์ด้วย WebAssembly หรือ ONNX โดยไม่ต้องมีเซิร์ฟเวอร์ Docker หรือการติดตั้ง
เพียงเพิ่มพารามิเตอร์ URL ก็เริ่มใช้ได้
เรียกใช้เซิร์ฟเวอร์ TTS ภายในเครื่องแล้วตั้งให้ Social Stream Ninja เชื่อมต่อไปยังเซิร์ฟเวอร์ คุณจะมีตัวเลือกเสียง การโคลนเสียง และการควบคุมฝั่งเซิร์ฟเวอร์มากขึ้น
ใช้ ปลายทางที่เข้ากันได้กับ OpenAI ที่มีในตัว
นี่คือวิธีที่สั้นที่สุดสำหรับสตรีมเมอร์ส่วนใหญ่:
&speech=en-US&ttsprovider=kokoro หรือ &speech=en-US&ttsprovider=kitten ไปยัง URL ของ dock.html .Testing local TTS รอการดาวน์โหลดโมเดลครั้งแรกหากใช้ Kokoro หรือ Piperนี่คือข้อผิดพลาดเกี่ยวกับ TTS ภายในเครื่องที่พบบ่อยที่สุด
localhost และ 127.0.0.1 หมายถึง "คอมพิวเตอร์เครื่องเดียวกันนี้" เสมอ หาก OBS อยู่บนคอมพิวเตอร์เครื่องหนึ่งและ Kokoro อยู่อีกเครื่อง 127.0.0.1 ใน URL ของ OBS จะชี้ไปยังคอมพิวเตอร์ OBS ไม่ใช่คอมพิวเตอร์ Kokoro
127.0.0.1 เฉพาะเมื่อเซิร์ฟเวอร์ TTS อยู่บนคอมพิวเตอร์เครื่องเดียวกับหน้าที่เล่นเสียง หากเซิร์ฟเวอร์อยู่อีกเครื่อง ให้ใช้ที่อยู่ IP ภายใน LAN ของเครื่องนั้น| การตั้งค่าของคุณ | ปลายทางที่ควรใช้ |
|---|---|
| OBS และ Kokoro ทำงานบนคอมพิวเตอร์เครื่องเดียวกัน | http://127.0.0.1:8880/v1/audio/speech |
| Kokoro ทำงานบนคอมพิวเตอร์อีกเครื่องในเครือข่ายที่บ้าน | http://192.168.x.x:8880/v1/audio/speech โดยใช้ IP ภายใน LAN ของคอมพิวเตอร์ที่รัน Kokoro |
| ปุ่มทดสอบในแอปเดสก์ท็อป SSN ทำงาน แต่ OBS เงียบ | OBS ยังต้องมีปลายทางที่ตัวเองใช้งานได้ การทดสอบในแอปไม่ได้ยืนยันว่า OBS เข้าถึงเซิร์ฟเวอร์ได้ |
บน Linux, macOS และ Windows ให้ตรวจสอบด้วยว่าไฟร์วอลล์อนุญาตพอร์ตนั้น และ Docker เปิดเผยพอร์ตด้วย -p 8880:8880.
ในป๊อปอัปส่วนขยาย ให้เปิดตัวเลือกผู้ให้บริการ TTS แล้วเลือก ปลายทาง TTS แบบกำหนดเอง / ภายในเครื่อง ตัวเลือกนี้แสดงช่องปลายทางภายในเครื่องที่เข้ากันได้กับ OpenAI และลิงก์กลับมายังคู่มือนี้
SSN ใช้เซิร์ฟเวอร์ TTS ภายในเครื่อง/ที่โฮสต์เองเหมือนปลายทางเสียงพูดที่เข้ากันได้กับ OpenAI โดยมีขั้นตอนหลักดังนี้:
สำหรับ ttsprovider=customtts, localtts, หรือ openai SSN ส่งคำขอ JSON POST ไปยังปลายทางที่กำหนดไว้:
CORS คือการตรวจสอบสิทธิ์ของเบราว์เซอร์ พูดง่าย ๆ คือเซิร์ฟเวอร์ TTS ต้องบอกเบราว์เซอร์ว่า "อนุญาตให้หน้านี้ขอเสียงจากฉันได้" หากไม่มีสิทธิ์นี้ คำขออาจถูกบล็อกก่อนที่ Kokoro หรือเซิร์ฟเวอร์ TTS อื่นจะได้รับเสียอีก
dock.html ใน Chrome หรือ OBS เรื่อง CORS อาจมีผลhttps://beta.socialstream.ninja/dock.html Chrome อาจบล็อกการเรียกไปยังที่อยู่ HTTP ภายในเครื่องหรือเครือข่ายส่วนตัวด้วยหากเซิร์ฟเวอร์ไม่อนุญาตคำขอจากเบราว์เซอร์ ให้เรียกใช้ บริดจ์ TTS ภายในเครื่องของ SSN แล้วตั้งให้ SSN เชื่อมต่อไปยัง http://127.0.0.1:8124/v1/audio/speech สำหรับ OBS วิธีตั้งค่าที่ง่ายที่สุดคือเรียกใช้บริดจ์บนคอมพิวเตอร์เครื่องเดียวกับ OBS
| การตอบกลับ | การรองรับของ SSN | หมายเหตุ |
|---|---|---|
| ข้อมูลเสียงแบบไบนารี | ใช่ | ตัวเลือกที่ดีที่สุด ส่งกลับ audio/mpeg, audio/wav, audio/ogg, audio/aac หรือชนิดเสียงอื่นที่เบราว์เซอร์เล่นได้ |
| JSON ที่มี URL เสียง | ใช่ | SSN ตรวจสอบ url, audio_url, output_url และฟิลด์ซ้อน เช่น data.url และรายการแรกใน data[] ด้วย |
| JSON ที่มีเสียงแบบ base64 | ใช่ | SSN ตรวจสอบ audio, audio_data, audioContent, b64_json และฟิลด์ซ้อน เช่น data และ data URL |
| PCM ดิบ | เฉพาะเมื่อมีตัวครอบ | ส่ง PCM กลับเป็นไฟล์ WAV หรือ WAV แบบ base64 องค์ประกอบเสียงของเบราว์เซอร์ไม่สามารถเล่นไบต์ PCM ดิบโดยตรงได้อย่างแน่นอน |
mp3 สำหรับไฟล์ขนาดเล็กและการรองรับเบราว์เซอร์ที่หลากหลาย wav สำหรับเซิร์ฟเวอร์โคลนเสียงภายในเครื่องและการทดสอบบริดจ์ และ opus เฉพาะเมื่อทั้งเซิร์ฟเวอร์และเบราว์เซอร์รองรับ
ปัจจุบัน SSN ยังไม่เล่นเสียงแบบทยอยรับข้อมูลสำหรับปลายทาง TTS แบบกำหนดเอง/ภายในเครื่อง โดยจะรอ blob การตอบกลับหรือข้อมูลเสียง JSON ก่อนจึงเล่น เซิร์ฟเวอร์ต้นทางบางตัวมีปลายทางสตรีม แต่เส้นทางที่เข้ากันได้กับ OpenAI ของ SSN ในปัจจุบันจะเก็บข้อมูลให้ครบก่อนเล่น
ข้อสรุปสำหรับการใช้งานจริง: ให้ข้อความแชตที่อ่านด้วย TTS สั้น การรองรับการสตรีมต้องมีเส้นทางเล่นเสียงแยก โดยใช้ช่วงเสียง WAV/MP3 แบบสตรีม, MediaSource, WebCodecs หรือมิกเซอร์ฝั่งเซิร์ฟเวอร์
เอนจินเหล่านี้มาพร้อม Social Stream Ninja และไม่ต้องติดตั้งเพิ่ม โดยทำงานในเบราว์เซอร์ด้วย WebAssembly (WASM) หรือ ONNX Runtime
| ผู้ให้บริการ | คุณภาพ | การใช้ CPU | GPU/WebGPU | พารามิเตอร์ URL |
|---|---|---|---|---|
| Kokoro TTS | ⭐⭐⭐⭐⭐ ยอดเยี่ยม | ปานกลาง | เร็วขึ้นเมื่อใช้ GPU | ?ttsprovider=kokoro |
| Piper TTS | ⭐⭐⭐⭐ ดีมาก | ต่ำ | เฉพาะ CPU | ?ttsprovider=piper |
| Kitten TTS | ⭐⭐⭐ ดี | ต่ำมาก | เฉพาะ CPU | ?ttsprovider=kitten |
| eSpeak-NG | ⭐⭐ เสียงหุ่นยนต์ | น้อยมาก | เฉพาะ CPU | ?ttsprovider=espeak |
เพิ่ม &ttsprovider= และ &speech= ใน URL ของ Social Stream ที่เป็นหน้า dock.html :
ขณะนี้ SSN มีเสียง Kokoro ภาษาอังกฤษ 28 เสียง ภาษาสเปน 3 เสียง และภาษาโปรตุเกสบราซิล 3 เสียง ระบุเสียงที่ต้องการด้วย &voicekokoro=:
ตัวอย่างภาษาสเปน:
ตัวอย่างภาษาโปรตุเกส:
ระบุโมเดลเสียงด้วย &pipervoice=:
Piper มีเสียงภาษาโปรตุเกสและสเปน:
ส่วนขยาย Chrome แหล่งข้อมูลเบราว์เซอร์ใน OBS และแอปเดสก์ท็อป Social Stream Ninja แบบสแตนด์อโลนล้วนใช้ dock.html พารามิเตอร์ URL สำหรับ TTS เหมือนกัน ความแตกต่างสำคัญคือเสียงเกิดขึ้นที่ใด
| ช่องทางใช้งาน | พฤติกรรม TTS ภายในเครื่อง | การเก็บเสียง |
|---|---|---|
| ส่วนขยาย Chrome / แหล่งข้อมูลเบราว์เซอร์ใน OBS | การ fetch จากเบราว์เซอร์ต้องมี CORS จากเซิร์ฟเวอร์ภายในเครื่อง เว้นแต่จะใช้บริดจ์ SSN | ใช้แหล่งข้อมูลเบราว์เซอร์ใน OBS พร้อมเปิด "Control audio via OBS" |
| แอปเดสก์ท็อปแบบสแตนด์อโลน | ใช้การตั้งค่าผู้ให้บริการเดียวกัน หน้าต่างไฟล์ภายในเครื่องของแอปมีข้อจำกัด CORS น้อยกว่า แต่บริดจ์ยังเป็นวิธีที่ปลอดภัยที่สุดสำหรับเซิร์ฟเวอร์ที่ปฏิเสธคำขอแบบเบราว์เซอร์ | เก็บเสียงเดสก์ท็อป/แอป หรือส่งเสียงแอปไปยังสายเสียงเสมือน |
| Kokoro แบบในตัวในแอปเดสก์ท็อป | แอปสามารถใช้เส้นทางภายในเครื่อง ninjafy.tts สำหรับ Kokoro แทนการพึ่งการโหลดโมเดลในเบราว์เซอร์เพียงอย่างเดียว |
เสียงเล่นจากแอป ดังนั้นให้ใช้การเก็บเสียงเดสก์ท็อป/แอป |
dock.html ลงใน OBS ตัว OBS เองต้องเข้าถึงเซิร์ฟเวอร์ TTS และเล่นเสียงได้
หากต้องการตัวเลือกเสียงเพิ่มเติม การโคลนเสียง หรือเซิร์ฟเวอร์เฉพาะที่ใช้ร่วมกับหลายเครื่องมือได้ คุณสามารถเรียกใช้เซิร์ฟเวอร์ TTS ภายในเครื่อง Social Stream Ninja เชื่อมต่อด้วย ปลายทาง TTS ที่เข้ากันได้กับ OpenAI โดยไม่ต้องใช้คีย์ API สำหรับเซิร์ฟเวอร์ภายในเครื่อง
ตัวเลือกที่แนะนำสามแบบ:
| เซิร์ฟเวอร์ | โมเดล | GPU | ดิสก์ | พอร์ตเริ่มต้น |
|---|---|---|---|---|
| Kokoro-FastAPI แนะนำ | Kokoro 82M | ไม่บังคับ | ~2 GB | 8880 |
| openedai-speech (Piper) ใช้ทรัพยากรน้อย | Piper TTS | เฉพาะ CPU | <1 GB | 8000 |
| kokoro-web | Kokoro 82M | ไม่บังคับ | ~2 GB | 3000 |
| แพ็กเกจ | ข้อดีหลัก | ข้อแลกเปลี่ยน |
|---|---|---|
| Kokoro แบบในตัว | ตัวเลือกแรกที่แนะนำ: ไม่ต้องมีเซิร์ฟเวอร์ คุณภาพดี เป็นส่วนตัว ใช้ได้ทั้งในเบราว์เซอร์และแอปเดสก์ท็อป | ไม่มีการโคลนเสียง |
| Kokoro-FastAPI | เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI ตั้งค่าง่ายด้วย Docker ใช้ CPU หรือ GPU ได้ มีเสียง Kokoro หลากหลาย | ไม่มีการโคลนเสียงจริง ฟีเจอร์ผสมเสียงและเสียงกำหนดเองขึ้นอยู่กับบิลด์เซิร์ฟเวอร์ |
| openedai-speech | ปลายทางที่เข้ากันได้กับ OpenAI ขนาดเล็ก Piper เหมาะกับ CPU และ XTTS เพิ่มการโคลนเสียงโดยใช้ VRAM ประมาณ 4 GB | รีโพซิทอรีระบุว่าโครงการส่วนใหญ่ล้าสมัยแล้ว จึงยังใช้ประโยชน์ได้แต่ไม่ควรคาดหวังการรองรับในระยะยาว |
| เซิร์ฟเวอร์ Chatterbox | การโคลนเสียง ตัวเลือกหน้าเว็บควบคุม API ที่เข้ากันได้กับ OpenAI และเครื่องมือสำหรับข้อความยาว | บางบิลด์รองรับ CUDA/GPU ได้ราบรื่นกว่า CPU การตั้งค่าขึ้นอยู่กับ fork ของเซิร์ฟเวอร์ |
| GPT-SoVITS | โคลนและควบคุมเสียงได้ดีด้วยเสียงอ้างอิงสั้น ๆ และรองรับข้อความถอดเสียง | ค่าเริ่มต้นไม่เข้ากันได้กับ OpenAI ให้ใช้โหมดบริดจ์ SSN |
| F5-TTS | โคลนเสียงแบบ zero-shot อย่างเป็นธรรมชาติด้วย WAV อ้างอิงและข้อความถอดเสียง | โครงการอย่างเป็นทางการไม่ได้เป็นปลายทาง OpenAI แบบง่าย ให้ใช้ตัวครอบหรือโหมดบริดจ์ |
| Qwen3-TTS | ฟีเจอร์โคลนและออกแบบเสียงสมัยใหม่ รวมถึงโมเดลขนาดเล็ก 0.6B/1.7B | เน้นไลบรารี/เดโม ต้องมีตัวครอบสำหรับ SSN |
| MisoTTS | สร้างเสียงพูดคุณภาพสูงตามพรอมป์ต์ | ไม่เหมาะกับเครื่องที่มี VRAM 6 GB ใช้โฮสต์ระยะไกล/กำหนดเองหากจำเป็น |
การโคลนเสียงไม่ใช่โหมดแยกของ SSN แต่เป็นฟีเจอร์ในเซิร์ฟเวอร์ TTS ภายในเครื่องบางตัว SSN ส่งข้อความแชตไปยังปลายทางภายในเครื่อง แล้วเซิร์ฟเวอร์เลือกเสียงที่โคลนจากไฟล์เสียงอ้างอิงที่บันทึกไว้ โปรไฟล์เสียง หรือการตั้งค่าบริดจ์
ttsprovider=customtts.สำหรับ VRAM ไม่เกิน 6 GB ให้เริ่มจากโมเดลโคลนเสียงแบบ zero-shot ขนาดเล็กและเซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI ก่อน โมเดลขนาดใหญ่ยังใช้ผ่านปลายทาง SSN เดียวกันได้หากผู้ใช้โฮสต์ไว้ที่อื่น
| ตัวเลือก | การโคลนเสียง | ใช้กับ VRAM 6 GB ได้ | เส้นทาง API สำหรับ SSN |
|---|---|---|---|
| Qwen3-TTS 0.6B Base | เสียงอ้างอิง 3 วินาที | น่าจะได้ | ใช้ตัวครอบที่เข้ากันได้กับ OpenAI จากนั้น ttsprovider=customtts |
| XTTS-v2 / openedai-speech | เสียงอ้างอิง WAV สั้น ๆ | ใช่ ประมาณ 4 GB ตามที่ openedai-speech รายงาน | /v1/audio/speech |
| Chatterbox Turbo / Server | โคลนจากเสียงอ้างอิง | น่าจะได้หากใช้ Turbo / แบ่งเป็นช่วงสั้น ๆ | บิลด์เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI หรือบริดจ์ |
| GPT-SoVITS | zero-shot 5 วินาที, few-shot 1 นาที | น่าจะได้เมื่อใช้ fp16 / การติดตั้งแบบเบา | ใช้ scripts/local-tts-bridge.cjs --mode gptsovits |
| F5-TTS | WAV อ้างอิง + ข้อความถอดเสียง | อาจได้ ขึ้นอยู่กับบิลด์และ vocoder | ใช้ตัวครอบที่เข้ากันได้กับ OpenAI หรือ --mode f5 สำหรับตัวครอบเซิร์ฟเวอร์ F5-TTS |
| MisoTTS 8B | บริบทเสียงจากพรอมป์ต์ | ไม่ โครงการแนะนำ VRAM 24 GB | เฉพาะปลายทางระยะไกล/กำหนดเอง |
POST /v1/audio/speech พร้อม { model, input, voice, response_format, speed } แล้วส่งไฟล์เสียงที่เล่นได้กลับมา ครอบคลุม OpenAI, Coqui/XTTS, ตัวครอบ Kokoro, ตัวครอบ Qwen และบริการพร็อกซีส่วนใหญ่
ค่าเหล่านี้เป็นจุดเริ่มต้นสำหรับใช้งานจริง ไม่ใช่ข้อรับประกันตายตัว เวอร์ชันโมเดล quantization ความยาวข้อความ อิมเมจ Docker และแอปเบื้องหลังอาจเปลี่ยนการใช้หน่วยความจำได้
| ตัวเลือก | ข้อกำหนดขั้นต่ำที่ใช้งานได้จริง | เหมาะสม | หมายเหตุ |
|---|---|---|---|
| TTS ของระบบ / eSpeak | พีซีสมัยใหม่ทั่วไป | พีซีทั่วไป | รวดเร็ว คุณภาพต่ำ ไม่มีการโคลนเสียง |
| Kitten แบบในตัว | CPU ระดับเริ่มต้น, RAM 4 GB | CPU แล็ปท็อปสมัยใหม่, RAM 8 GB | โมเดล ONNX ขนาดเล็ก เริ่มต้นเร็ว |
| Piper แบบในตัว | CPU สมัยใหม่, RAM 4–8 GB | CPU สมัยใหม่, RAM 8 GB | ตัวเลือกเสียงนิวรัลที่ดีและใช้ทรัพยากรน้อย |
| Kokoro แบบในตัว | CPU สมัยใหม่, RAM 8 GB | GPU ที่รองรับ WebGPU หรือ CPU ที่เร็ว, RAM 8–16 GB | คุณภาพดีที่สุดโดยไม่ต้องตั้งค่าเพิ่มเติม การโหลดครั้งแรกจะดาวน์โหลดไฟล์โมเดล |
| Kokoro-FastAPI | โฮสต์ Docker ที่ใช้ CPU, RAM 8 GB | ใช้ GPU NVIDIA หรือไม่ก็ได้, RAM 8–16 GB | เซิร์ฟเวอร์ภายในเครื่องที่เหมาะเมื่อการโหลดโมเดลในเบราว์เซอร์ไม่สะดวก |
| openedai-speech Piper | CPU, RAM 4–8 GB | CPU, RAM 8 GB | เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI ขนาดเล็ก |
| openedai-speech XTTS | GPU NVIDIA ที่มี VRAM ประมาณ 4 GB, RAM 8–16 GB | GPU NVIDIA 6 GB ขึ้นไป และ RAM 16 GB | แนวทางโคลนเสียง ใช้ CPU ได้แต่ช้า |
| เซิร์ฟเวอร์ Chatterbox | บางบิลด์ใช้ CPU ได้ แต่ทำงานช้า | GPU NVIDIA 6 GB ขึ้นไป และ RAM 16 GB | ใช้ GPU เมื่อโคลนเสียงหรือประมวลผลข้อความยาว |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU สำหรับทดสอบเท่านั้น ทำงานช้า | GPU NVIDIA 6 GB ขึ้นไปสำหรับโมเดลขนาดเล็ก/ที่ปรับแต่งแล้ว และ RAM 16 GB | การเลือกตัวครอบและขนาดโมเดลมีผล คาดว่าจะต้องตั้งค่าเพิ่มเติม |
| MisoTTS 8B | ไม่แนะนำให้รันภายในเครื่องที่มี VRAM 6 GB | VRAM 24 GB หรือโฮสต์ระยะไกล | รีโพซิทอรีแนะนำ GPU ที่มี VRAM สูงสำหรับการใช้งานแบบโต้ตอบ |
นี่คือเซิร์ฟเวอร์โคลนเสียงที่โฮสต์เองซึ่งตรวจสอบความเข้ากันได้กับ SSN แล้ว เส้นทางปลายทางภายในเครื่องผ่านการทดสอบกับทั้ง dock.html และ featured.html.
SSN รองรับการตอบกลับเป็นเสียงไบนารีโดยตรง JSON ที่มีเสียงแบบ base64 และ JSON ที่มี URL เสียง การเล่นเสียงแบบกำหนดเอง/ภายในเครื่องในปัจจุบันจะรับเสียงที่ส่งกลับมาให้ครบก่อนเล่น ยังไม่รองรับการเล่นแบบทยอยสตรีม
| เซิร์ฟเวอร์ | เส้นทาง SSN | หมายเหตุ |
|---|---|---|
| openedai-speech | โดยตรงหรือผ่านบริดจ์ | เข้ากันได้กับ OpenAI /v1/audio/speech โหมด Piper ผ่านการทดสอบสังเคราะห์เสียงจริงด้วย CPU จาก dock.html และ featured.html ทั้งโดยตรงและผ่านบริดจ์ หากเรียกใช้จากซอร์สบน Windows ให้ตรวจสอบว่าโฟลเดอร์ Scripts ของ venv อยู่ใน PATH เพื่อให้ piper.exe และ ffmpeg.exe ถูกค้นพบได้ |
| chatterbox-tts-api | โดยตรงหรือผ่านบริดจ์ | เข้ากันได้กับ OpenAI /v1/audio/speech ใช้เสียงอ้างอิงที่กำหนดไว้สำหรับการโคลน ทดสอบรูปแบบ API แล้วทั้งโดยตรงและผ่านบริดจ์ |
| Chatterbox-TTS-Server | โดยตรงหรือผ่านบริดจ์ | ปลายทางที่เข้ากันได้กับ OpenAI และหน้าเว็บควบคุม ผ่านการทดสอบสังเคราะห์เสียงจริงด้วย CPU โดยใช้ Emily.wav จาก dock.html และ featured.html ทั้งโดยตรงและผ่านบริดจ์ |
| GPT-SoVITS | โหมดบริดจ์ | เรียกใช้บริดจ์ SSN ด้วย --mode gptsovits เซิร์ฟเวอร์ปลายทางคือ /tts ไม่ใช่แบบที่เข้ากันได้กับ OpenAI |
| F5-TTS_server | โหมดบริดจ์ | เรียกใช้บริดจ์ SSN ด้วย --mode f5 เซิร์ฟเวอร์ปลายทางใช้ GET /synthesize_speech/. |
| F5-TTS อย่างเป็นทางการ | ต้องมีตัวครอบ | เน้น CLI, Gradio และซ็อกเก็ตเซิร์ฟเวอร์ก่อน ใช้ตัวครอบที่เข้ากันได้กับ OpenAI หรือโหมดบริดจ์ F5 เชื่อมต่อกับตัวครอบ |
| Qwen3-TTS | ต้องมีตัวครอบ | เน้นไลบรารีและเดโม Gradio ก่อน เหมาะสำหรับสร้างตัวครอบขนาดเล็กที่เข้ากันได้กับ OpenAI รอบ generate_voice_clone. |
| MisoTTS | เฉพาะระยะไกล/กำหนดเอง | รองรับการโคลนเสียง แต่โมเดล 8B ไม่เหมาะกับ VRAM 6 GB และรีโพซิทอรีไม่มีปลายทาง REST ภายในเครื่อง |
Kokoro-FastAPI เรียกใช้โมเดล Kokoro 82M เป็นเซิร์ฟเวอร์ภายในเครื่องพร้อม API ที่เข้ากันได้กับ OpenAI ทำงานบน CPU ได้ (ไม่ต้องใช้ GPU) และมีคุณภาพเสียงยอดเยี่ยม
เปิดเทอร์มินัล (Command Prompt, PowerShell หรือ Terminal) แล้วเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:
เปิดเบราว์เซอร์แล้วไปที่ http://localhost:8880/web/— คุณควรเห็นหน้าเว็บควบคุมที่ใช้ทดสอบเสียงได้
มีเสียงให้เลือกกว่า 67 เสียง ตัวอย่างเสียงเด่น:
ดูและทดสอบเสียงทั้งหมดได้ที่ http://localhost:8880/web/ เมื่อเซิร์ฟเวอร์ทำงานแล้ว
หาก Kokoro-FastAPI อยู่บนคอมพิวเตอร์เครื่องเดียวกับ OBS:
หาก Kokoro-FastAPI อยู่บนคอมพิวเตอร์อีกเครื่อง ให้แทนที่ 192.168.x.x ด้วยที่อยู่ IP ภายใน LAN ของเครื่องนั้น:
af_bella, af_sarah, am_adam, หรือ bf_emma ชื่อ เช่น echo, nova, และ alloy เป็นชื่อแบบ OpenAI/openedai-speech และอาจใช้กับ Kokoro ไม่ได้
หากต้องการให้ Kokoro-FastAPI ทำงานเบื้องหลังโดยอัตโนมัติต่อเนื่อง ให้ใช้แฟล็ก restart ของ Docker:
จากนี้จะเริ่มโดยอัตโนมัติพร้อม Docker Desktop ทุกครั้งที่รีบูต
openedai-speech เปิดให้ใช้ปลายทางที่เข้ากันได้กับ OpenAI /v1/audio/speech ที่ Social Stream ต้องใช้ อิมเมจขนาดเล็กรัน Piper บน CPU ส่วนอิมเมจเต็มรันการโคลนเสียง XTTS-v2 บน GPU ที่รองรับได้
ใช้ตัวเลือกนี้สำหรับเซิร์ฟเวอร์ TTS ที่ใช้เฉพาะ CPU และมีขนาดต่ำกว่า 1 GB โดยไม่มี XTTS-v2 หรือการโคลนเสียง
docker-compose.min.yml หรือเรียกใช้คำสั่งด้านล่างโดยตรง
หากเรียกใช้ openedai-speech จากซอร์สในเครื่องแทน Docker ให้เพิ่มโฟลเดอร์สคริปต์ของ virtual environment ไปยัง PATH ก่อนเริ่มเซิร์ฟเวอร์ มิฉะนั้นคำขออาจส่งกลับ HTTP 500 เพราะเซิร์ฟเวอร์ไม่พบ piper.exe หรือ ffmpeg.exe.
openedai-speech ใช้ชื่อเสียงแบบ OpenAI ที่จับคู่กับเสียง Piper:
XTTS-v2 เป็นโมเดล ไม่ใช่เว็บ API ให้ใช้เซิร์ฟเวอร์ openedai-speech แบบเต็มเพื่อโหลดโมเดล เลือกเสียงอ้างอิงที่บันทึกไว้ รับข้อความแชตจาก SSN และส่งเสียงที่เล่นได้กลับมา เซิร์ฟเวอร์รายงานว่าใช้ VRAM ของ GPU ประมาณ 4 GB ในทางปฏิบัติ ประมวลผลด้วย CPU ได้แต่ช้า
openedai-speech-min สำหรับ XTTS-v2 อิมเมจขนาดเล็กมีเฉพาะ Piper ส่วน XTTS-v2 ต้องติดตั้งแบบเต็มและใช้ model=tts-1-hd ในคำขอเสียงพูดแต่ละครั้ง
บน macOS หรือ Linux ให้ใช้ cp sample.env speech.env แทน Copy-Item Docker ต้องเข้าถึง GPU ที่รองรับได้ โมเดลจะดาวน์โหลดเมื่อใช้งานครั้งแรก
tts-1-hd ในไฟล์ config/voice_to_speaker.yaml:เก็บเสียงเดิมทั้งหมดที่แสดงอยู่ใต้ tts-1-hd เปลี่ยน me เป็นชื่อเสียงที่ต้องการให้ SSN ส่ง และใช้รหัสภาษา XTTS ที่ถูกต้องเมื่อจำเป็น
openaimodel=tts-1-hd จำเป็นสำหรับ XTTS-v2 หากไม่ระบุ Social Stream จะส่งค่าเริ่มต้น tts-1 แล้ว openedai-speech จะเลือก Piper แทน ส่วน voiceopenai ต้องตรงกับชื่อเสียงที่โคลนใน voice_to_speaker.yaml.
หากเบราว์เซอร์หรือ OBS บล็อกคำขอโดยตรง ให้เรียกใช้ บริดจ์ TTS ภายในเครื่อง บนคอมพิวเตอร์ OBS และคงพารามิเตอร์โมเดลกับเสียงไว้เหมือนเดิมขณะเปลี่ยน openaiendpoint เป็น http://127.0.0.1:8124/v1/audio/speech.
บริดจ์เป็นโปรแกรมช่วยขนาดเล็กภายในเครื่อง รับคำขอจากเบราว์เซอร์ SSN ติดต่อเซิร์ฟเวอร์ TTS แล้วส่งเสียงกลับให้ SSN พร้อมเฮดเดอร์ที่เหมาะกับเบราว์เซอร์
http://127.0.0.1:8124/v1/audio/speech แม้ว่าเซิร์ฟเวอร์ TTS จริงจะอยู่บนคอมพิวเตอร์อีกเครื่องก็ตาม
โฟลเดอร์เริ่มต้นแบบสแตนด์อโลนคือ local-tts-bridge/ ดู README ของบริดจ์ สำหรับตัวเลือกการเริ่มต้นทั้งหมด
Windows PowerShell เมื่อเซิร์ฟเวอร์ TTS อยู่บนคอมพิวเตอร์เครื่องเดียวกันนี้:
Windows PowerShell เมื่อเซิร์ฟเวอร์ TTS อยู่บนคอมพิวเตอร์อีกเครื่อง:
เทอร์มินัล macOS/Linux:
จากนั้นตั้ง URL ของ OBS dock.html ไปยังบริดจ์:
GPT-SoVITS ใช้รูปแบบ JSON เฉพาะของตนสำหรับ /tts ดังนั้นบริดจ์จึงแปลงคำขอ SSN ที่เข้ากันได้กับ OpenAI ให้เป็นเนื้อหาคำขอ GPT-SoVITS ได้
ตัวครอบเซิร์ฟเวอร์ F5-TTS บางตัวเปิดให้ใช้ /synthesize_speech/?text=...&voice=... แทนปลายทางที่เข้ากันได้กับ OpenAI บริดจ์แปลงคำขอของ SSN ให้เป็นรูปแบบคิวรีนั้นได้
http://127.0.0.1:8124/v1/audio/speech เปลี่ยนพอร์ตด้วย SSN_TTS_BRIDGE_PORT=8125 หากจำเป็น
เซิร์ฟเวอร์ที่โฮสต์เองทั้งหมดด้านบนใช้วิธีเชื่อมต่อเดียวกัน คือ ปลายทาง OpenAI TTS โดยใช้ URL ภายในเครื่องแบบกำหนดเอง
| พารามิเตอร์ | ค่า | คำอธิบาย |
|---|---|---|
ttsprovider |
customtts หรือ openai |
ใช้เส้นทาง TTS ที่เข้ากันได้กับ OpenAI ใช้ customtts สำหรับปลายทางภายในเครื่อง/ที่โฮสต์เอง |
openaiendpoint |
http://localhost:8880/v1/audio/speech |
URL เซิร์ฟเวอร์ภายในเครื่องของคุณ (เปลี่ยนพอร์ตตามต้องการ) |
speech |
en-US |
เปิดใช้ TTS สำหรับภาษาอังกฤษ |
voiceopenai |
af_bella |
ชื่อเสียง (ขึ้นอยู่กับเซิร์ฟเวอร์) |
openaiformat |
mp3 |
รูปแบบเสียง: mp3, wav, opus, flac |
openaispeed |
1.0 |
ความเร็วเสียงพูด (0.5–2.0) |
customttsendpoint และ localttsendpoint ก็ใช้ได้เช่นกัน customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, และ localttsformat เป็นชื่อแทนที่ยอมรับได้สำหรับช่องแบบ OpenAI
openaiendpoint ต้องเข้าถึงได้จากหน้าที่กำลังเล่น TTS และ voiceopenai ต้องเป็นเสียงที่เซิร์ฟเวอร์รองรับ Kokoro-FastAPI ใช้ชื่อ เช่น af_bella โดย openedai-speech มักใช้ชื่อ เช่น nova หรือ echo.
ใช้ได้กับผู้ให้บริการ TTS ทุกราย รวมถึงเซิร์ฟเวอร์ภายในเครื่อง:
| พารามิเตอร์ | ตัวอย่าง | คำอธิบาย |
|---|---|---|
simpletts |
&simpletts |
ข้ามคำว่า "says" — อ่านเฉพาะข้อความ |
simpletts2 |
&simpletts2 |
ไม่อ่านชื่อผู้ใช้เลย |
volume |
&volume=0.8 |
ระดับเสียง (0.0–1.0) |
skipmessages |
&skipmessages=3 |
อ่านทุกข้อความที่ 3 เท่านั้น |
ttscommand |
&ttscommand=!say |
อ่านเฉพาะข้อความที่ขึ้นต้นด้วย !say |
readevents |
&readevents |
อ่านการสมัครสมาชิก การบริจาค ฯลฯ ด้วย |
ttsquick |
&ttsquick=100 |
ตัดเสียงพูดหลังจากจำนวนอักขระนี้โดยตั้งใจ ลบตัวเลือกนี้หากข้อความถูกอ่านไม่จบ |
SSN รองรับ speech synthesis ของ OS/เบราว์เซอร์ผ่าน speechSynthesis รวมถึง Kokoro, Piper, Kitten และ eSpeak แบบในตัว สิ่งที่น่าเพิ่มในฝั่งเบราว์เซอร์ในอนาคตมากที่สุดคือการเลือกอุปกรณ์ส่งออกเสียงเมื่อ setSinkId ใช้งานได้ ตัวเลือกเสียง Piper เพิ่มเติม และเส้นทางเล่นเสียงแบบทยอยสตรีมโดยเฉพาะสำหรับเซิร์ฟเวอร์ที่สตรีมเสียงเป็นช่วง ๆ ได้
วิธีเก็บเสียง TTS ใน OBS ขึ้นอยู่กับวิธีที่คุณใช้ Social Stream Ninja
นี่คือวิธีที่ง่ายที่สุดและใช้ได้กับ ผู้ให้บริการ TTS ทั้งหมด (แบบในตัวและเซิร์ฟเวอร์ที่โฮสต์เอง)
dock.html URL ที่มีพารามิเตอร์ TTSหากใช้แอปเดสก์ท็อป Social Stream Ninja แบบสแตนด์อโลน (ไม่ใช่แหล่งข้อมูลเบราว์เซอร์ใน OBS):
Audio Router ส่งเสียงจากแอปหนึ่งไปยังสายเสียงเสมือนได้ แต่เป็นซอฟต์แวร์เก่า หากการกำหนดเส้นทางเสียงรายแอปของ Windows ใช้งานได้ ให้ใช้วิธีนั้นก่อน
Voicemeeter เหมาะที่สุดเมื่อคุณต้องการฟัง TTS ภายในเครื่อง ส่งเสียงเข้า OBS และแยกจากเสียงเพลง/เกม
?speech=en-US โดยไม่ระบุผู้ให้บริการ) ขึ้นอยู่กับเสียงที่เบราว์เซอร์เปิดให้ใช้ OBS อาจไม่แสดงเสียงให้เลือก หรือแสดงรายชื่อเสียงแต่ไม่สร้างเสียงที่เก็บได้ ให้ทดสอบการอ่านและไฟล์บันทึกของ OBS แยกกัน ใช้ผู้ให้บริการด้านบนสักราย (kokoro, piper เป็นต้น) แทน
| ตัวเลือก | การตั้งค่า | คุณภาพ | ส่วนตัว | OBS (แหล่งข้อมูลเบราว์เซอร์) | ต้องใช้ GPU | ค่าใช้จ่าย |
|---|---|---|---|---|---|---|
| Kokoro แบบในตัว | ไม่มี | ⭐⭐⭐⭐⭐ | ใช่ | ใช่ | ไม่ต้องใช้ (แต่เร็วขึ้นถ้ามี) | ฟรี |
| Piper แบบในตัว | ไม่มี | ⭐⭐⭐⭐ | ใช่ | ใช่ | ไม่มี | ฟรี |
| Kitten แบบในตัว | ไม่มี | ⭐⭐⭐ | ใช่ | ใช่ | ไม่มี | ฟรี |
| eSpeak แบบในตัว | ไม่มี | ⭐⭐ | ใช่ | ใช่ | ไม่มี | ฟรี |
| Kokoro-FastAPI | Docker | ⭐⭐⭐⭐⭐ | ใช่ | ใช่ | ไม่ต้องใช้ (เลือกใช้ได้) | ฟรี |
| openedai-speech | Docker | ⭐⭐⭐⭐ | ใช่ | ใช่ | ไม่มี | ฟรี |
| ElevenLabs | คีย์ API | ⭐⭐⭐⭐⭐ | ไม่มี | ใช่ | ไม่มี | แพ็กเกจแบบชำระเงิน |
| TTS ของระบบ | ไม่มี | ⭐⭐ | ใช่ | ไม่* | ไม่มี | ฟรี |
* TTS ของระบบต้องส่งเสียงผ่านสายเสียงเสมือนเพื่อให้ OBS เก็บเสียงได้
การทดสอบในแอปยืนยันเพียงว่าแอปเข้าถึงเซิร์ฟเวอร์ได้ แหล่งข้อมูลเบราว์เซอร์ใน OBS ยังต้องเข้าถึงปลายทางและเล่นเสียงได้เอง
127.0.0.1 ด้วย IP ภายใน LAN ของคอมพิวเตอร์เซิร์ฟเวอร์ TTSttsquick ตัวเลือกนั้นตั้งใจตัดข้อความที่จะอ่านให้สั้นลง&ttsquick=14 หรือค่าจำนวนน้อยอื่น ให้ลบออกแล้วรีเฟรชแหล่งข้อมูลเบราว์เซอร์ใน OBStypewriter= ให้ลบออกชั่วคราวขณะทดสอบ โดยปกติ TTS ใช้ข้อความต้นฉบับ แต่การเอาเอฟเฟกต์ภาพออกเป็นวิธีที่รวดเร็วในการตัดปัญหาเรื่องจังหวะเวลาhttp://127.0.0.1:8880/web/ สำหรับ Kokoro-FastAPI หรือพอร์ตที่ตรงกับเซิร์ฟเวอร์ของคุณhttp://SERVER_LAN_IP:8880/web/ หากเปิดไม่ได้ OBS ก็จะใช้เซิร์ฟเวอร์นั้นไม่ได้เช่นกันหากเบราว์เซอร์แจ้งว่าคำขอถูกบล็อกด้วย CORS, local network access, private network access หรือ failed fetch เซิร์ฟเวอร์ TTS อาจไม่ได้รับคำขอนั้นเลย
npm run local-tts-bridge บนคอมพิวเตอร์ OBS แล้วตั้งให้ SSN เชื่อมต่อไปยัง http://127.0.0.1:8124/v1/audio/speech.af_bella, af_sarah, am_adam หรือเสียงอื่นจากหน้าเว็บ Kokoronova, echo, และ alloy อาจใช้ได้?speech=en-US โดยไม่มี &ttsprovider=) TTS ของระบบอาจต้องใช้การเก็บเสียงเดสก์ท็อปหรือสายเสียงเสมือนแท็กอิมเมจ Docker อาจเปลี่ยนแปลง หากคำสั่งในคู่มือนี้ใช้ไม่ได้ ให้ดูแท็กปัจจุบันจากหน้าโครงการ: