คู่มือ AI TTS ในเครื่อง

อ่านแชตสดออกเสียงด้วยเสียง AI ภายในเครื่อง เริ่มจากตัวเลือกที่ไม่ต้องติดตั้ง แล้วใช้เซิร์ฟเวอร์ภายในเครื่องเมื่อจำเป็นเท่านั้น

ไทย

ภาพรวม

ใช้ได้กับข้อความแชตที่เก็บมา ไม่ว่าจะมาจากแพลตฟอร์มใด ผู้ให้บริการเสียงเป็นส่วนของตัวเล่น SSN ไม่ใช่ YouTube, Twitch, TikTok หรือเว็บไซต์แชตอื่น ผู้ให้บริการ AI ภายในเครื่องเหล่านี้ต่างจาก TTS ของระบบ: สร้างเสียงจากหน้าเว็บเอง แทนการพึ่งพา OBS ให้เข้าถึงเสียงของระบบปฏิบัติการ ดู คู่มือตั้งค่า OBS แบบสั้น เพื่อแยกเรื่องเสียงที่มีให้เลือกออกจากการเก็บเสียง เปรียบเทียบผู้ให้บริการ ฟังตัวอย่าง และดูการตั้งค่า

Social Stream Ninja อ่านข้อความแชตออกเสียงได้ด้วย AI แปลงข้อความเป็นเสียงพูดภายในเครื่อง คำว่า "ภายในเครื่อง" หมายถึงได้สองอย่าง: เสียงทำงานในเบราว์เซอร์ หรือคุณเรียกใช้เซิร์ฟเวอร์ TTS ขนาดเล็กบนคอมพิวเตอร์ของตัวเอง

มีสองแนวทาง:

แนวทางที่ 2 — เซิร์ฟเวอร์ที่โฮสต์เอง ต้องใช้ Docker

เรียกใช้เซิร์ฟเวอร์ TTS ภายในเครื่องแล้วตั้งให้ Social Stream Ninja เชื่อมต่อไปยังเซิร์ฟเวอร์ คุณจะมีตัวเลือกเสียง การโคลนเสียง และการควบคุมฝั่งเซิร์ฟเวอร์มากขึ้น

  • Kokoro-FastAPI
  • openedai-speech (Piper)
  • kokoro-web

ใช้ ปลายทางที่เข้ากันได้กับ OpenAI ที่มีในตัว

เริ่มจากแนวทางที่ 1 หากเพียงต้องการให้ TTS ทำงานใน OBS ให้ลอง Kokoro หรือ Kitten แบบในตัวก่อน ทั้งสองไม่ต้องใช้ Docker เซิร์ฟเวอร์ หรือคีย์ API ใช้เซิร์ฟเวอร์ที่โฮสต์เองเฉพาะเมื่อต้องการเสียงจากเซิร์ฟเวอร์ การโคลนเสียง หรือโมเดลอื่นโดยเฉพาะ

ตั้งค่าอย่างรวดเร็ว

นี่คือวิธีที่สั้นที่สุดสำหรับสตรีมเมอร์ส่วนใหญ่:

1
ใช้ผู้ให้บริการแบบในตัวก่อน เพิ่ม &speech=en-US&ttsprovider=kokoro หรือ &speech=en-US&ttsprovider=kitten ไปยัง URL ของ dock.html .
2
ใส่ URL นั้นใน OBS เป็นแหล่งข้อมูลเบราว์เซอร์ แหล่งข้อมูลเบราว์เซอร์ใน OBS คือหน้าที่จะสร้างเสียง
3
เปิดการเก็บเสียงใน OBS ในคุณสมบัติของแหล่งข้อมูลเบราว์เซอร์ ให้เปิด ควบคุมเสียงผ่าน OBS (Control audio via OBS)
4
ส่งข้อความแชตทดสอบสั้น ๆ หนึ่งข้อความ ใช้ข้อความง่าย ๆ เช่น Testing local TTS รอการดาวน์โหลดโมเดลครั้งแรกหากใช้ Kokoro หรือ Piper
5
หลังจากนั้นจึงค่อยลองเซิร์ฟเวอร์ที่โฮสต์เอง หากใช้ Kokoro-FastAPI, openedai-speech หรือเซิร์ฟเวอร์ Docker อื่น ให้อ่านหลักการ localhost ด้านล่างก่อนคัดลอก URL ไปใส่ OBS

หลักการ localhost / 127.0.0.1

นี่คือข้อผิดพลาดเกี่ยวกับ TTS ภายในเครื่องที่พบบ่อยที่สุด

localhost และ 127.0.0.1 หมายถึง "คอมพิวเตอร์เครื่องเดียวกันนี้" เสมอ หาก OBS อยู่บนคอมพิวเตอร์เครื่องหนึ่งและ Kokoro อยู่อีกเครื่อง 127.0.0.1 ใน URL ของ OBS จะชี้ไปยังคอมพิวเตอร์ OBS ไม่ใช่คอมพิวเตอร์ Kokoro
แผนภาพแสดงว่า localhost หมายถึงคอมพิวเตอร์เครื่องเดียวกัน ส่วนคอมพิวเตอร์อีกเครื่องต้องใช้ที่อยู่ IP ภายใน LAN
ใช้ 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.

ตำแหน่งที่ต้องคลิกใน SSN

ในป๊อปอัปส่วนขยาย ให้เปิดตัวเลือกผู้ให้บริการ TTS แล้วเลือก ปลายทาง TTS แบบกำหนดเอง / ภายในเครื่อง ตัวเลือกนี้แสดงช่องปลายทางภายในเครื่องที่เข้ากันได้กับ OpenAI และลิงก์กลับมายังคู่มือนี้

แผนผังรูปแบบภาพหน้าจอแสดงช่องตั้งค่า TTS ภายในเครื่องใน Social Stream Ninja
ช่องปลายทางคือส่วนสำคัญ สำหรับเซิร์ฟเวอร์ภายในเครื่อง โดยทั่วไปปล่อยคีย์ API ว่างไว้ได้ เลือกชื่อเสียงที่เซิร์ฟเวอร์รองรับจริง
เกี่ยวกับภาพหน้าจอ: แผนผังช่องตั้งค่า SSN ด้านบนแสดงช่องปลายทางภายในเครื่อง หน้าตาของเซิร์ฟเวอร์ภายนอกเปลี่ยนไปตามเวอร์ชันโครงการ จึงมีลิงก์ภาพหน้าจอและรายละเอียด UI ปัจจุบันจากรีโพซิทอรีแต่ละโครงการอยู่ใกล้ขั้นตอนตั้งค่าที่เกี่ยวข้อง

ขั้นตอนแบบโฮสต์เอง

SSN ใช้เซิร์ฟเวอร์ TTS ภายในเครื่อง/ที่โฮสต์เองเหมือนปลายทางเสียงพูดที่เข้ากันได้กับ OpenAI โดยมีขั้นตอนหลักดังนี้:

chat text -> SSN TTS request -> local endpoint or SSN bridge -> TTS server -> audio response -> SSN playback

รูปแบบคำขอ

สำหรับ ttsprovider=customtts, localtts, หรือ openai SSN ส่งคำขอ JSON POST ไปยังปลายทางที่กำหนดไว้:

POST /v1/audio/speech { "model": "tts-1", "input": "Chat message text", "voice": "af_bella", "response_format": "mp3", "speed": 1.0 }

CORS, หน้าเว็บที่โฮสต์ไว้ และบริดจ์

CORS คือการตรวจสอบสิทธิ์ของเบราว์เซอร์ พูดง่าย ๆ คือเซิร์ฟเวอร์ TTS ต้องบอกเบราว์เซอร์ว่า "อนุญาตให้หน้านี้ขอเสียงจากฉันได้" หากไม่มีสิทธิ์นี้ คำขออาจถูกบล็อกก่อนที่ Kokoro หรือเซิร์ฟเวอร์ TTS อื่นจะได้รับเสียอีก

หากเซิร์ฟเวอร์ไม่อนุญาตคำขอจากเบราว์เซอร์ ให้เรียกใช้ บริดจ์ 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 หรือมิกเซอร์ฝั่งเซิร์ฟเวอร์

แนวทางที่ 1 — TTS แบบในตัว (ไม่ต้องตั้งค่า)

เอนจินเหล่านี้มาพร้อม 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 :

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro

ตัวเลือก Kokoro TTS

ขณะนี้ SSN มีเสียง Kokoro ภาษาอังกฤษ 28 เสียง ภาษาสเปน 3 เสียง และภาษาโปรตุเกสบราซิล 3 เสียง ระบุเสียงที่ต้องการด้วย &voicekokoro=:

English female: af_bella, af_sarah, af_nicole, af_sky English male: am_adam, am_michael British female: bf_emma, bf_isabella British male: bm_george, bm_lewis
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro&voicekokoro=af_bella&kokorospeed=1.1
หมายเหตุเรื่องภาษา: เลือกเสียง Kokoro ที่ตรงกับภาษาที่ต้องการ การเปลี่ยนเฉพาะพารามิเตอร์ภาษาไม่ได้เปลี่ยนเสียงที่เลือกไว้

ตัวอย่างภาษาสเปน:

dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=kokoro&voicekokoro=ef_dora

ตัวอย่างภาษาโปรตุเกส:

dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=kokoro&voicekokoro=pf_dora

ตัวเลือก Piper TTS

ระบุโมเดลเสียงด้วย &pipervoice=:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=piper&pipervoice=en_US-hfc_female-medium

Piper มีเสียงภาษาโปรตุเกสและสเปน:

Brazilian Portuguese: pt_BR-faber-medium, pt_BR-edresson-low
Spanish: es_ES-davefx-medium, es_MX-ald-medium
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=piper&pipervoice=pt_BR-faber-medium
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=piper&pipervoice=es_ES-davefx-medium

ตัวเลือก Kitten TTS

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kitten&kittenvoice=expr-voice-4-f

ตัวเลือก eSpeak-NG

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=espeak&espeakvoice=en&espeakspeed=175
dock.html?session=YOUR_SESSION&speech=pt-BR&ttsprovider=espeak&espeakvoice=pt-br&espeakspeed=145
dock.html?session=YOUR_SESSION&speech=es-ES&ttsprovider=espeak&espeakvoice=es&espeakspeed=145
การโหลดครั้งแรก: Kokoro และ Piper ต้องดาวน์โหลดไฟล์โมเดลในการใช้งานครั้งแรก (~50–200 MB) โดยทำงานเบื้องหลังอัตโนมัติ การโหลดครั้งถัดไปใช้โมเดลที่แคชไว้ได้ แต่การเริ่มต้นยังต้องใช้เวลา OBS มีแคชแยกจาก Chrome/Edge
การเก็บเสียงใน OBS: ผู้ให้บริการ TTS แบบในตัวทั้งหมดเล่นเสียงผ่านเบราว์เซอร์โดยตรง ใน OBS ให้เพิ่ม dock.html เป็นแหล่งข้อมูลเบราว์เซอร์ แล้วเปิด "ควบคุมเสียงผ่าน OBS (Control audio via OBS)"— ไม่ต้องใช้สายเสียงเสมือน ดู ส่วน OBS ด้านล่าง

หมายเหตุสำหรับเบราว์เซอร์และแอปเดสก์ท็อป

ส่วนขยาย 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 แทนการพึ่งการโหลดโมเดลในเบราว์เซอร์เพียงอย่างเดียว เสียงเล่นจากแอป ดังนั้นให้ใช้การเก็บเสียงเดสก์ท็อป/แอป
อย่าสับสนระหว่างการทดสอบในแอปกับ OBS หากกด Test ภายในแอป SSN แอปจะทดสอบจากภายในแอป หากคุณคัดลอก dock.html ลงใน OBS ตัว OBS เองต้องเข้าถึงเซิร์ฟเวอร์ TTS และเล่นเสียงได้

แนวทางที่ 2 — เซิร์ฟเวอร์ TTS ที่โฮสต์เอง

หากต้องการตัวเลือกเสียงเพิ่มเติม การโคลนเสียง หรือเซิร์ฟเวอร์เฉพาะที่ใช้ร่วมกับหลายเครื่องมือได้ คุณสามารถเรียกใช้เซิร์ฟเวอร์ TTS ภายในเครื่อง Social Stream Ninja เชื่อมต่อด้วย ปลายทาง TTS ที่เข้ากันได้กับ OpenAI โดยไม่ต้องใช้คีย์ API สำหรับเซิร์ฟเวอร์ภายในเครื่อง

ข้อกำหนด: Docker Desktop ต้องติดตั้งและทำงานอยู่ Docker ใช้ฟรีสำหรับการใช้งานส่วนบุคคล

ตัวเลือกที่แนะนำสามแบบ:

เซิร์ฟเวอร์ โมเดล 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 ส่งข้อความแชตไปยังปลายทางภายในเครื่อง แล้วเซิร์ฟเวอร์เลือกเสียงที่โคลนจากไฟล์เสียงอ้างอิงที่บันทึกไว้ โปรไฟล์เสียง หรือการตั้งค่าบริดจ์

ขั้นตอนทั่วไป

  1. บันทึกคลิปอ้างอิงเสียงสะอาด โดยทั่วไปเป็นเสียงผู้พูดคนเดียว 3–30 วินาที มีเสียงรบกวนน้อย
  2. เอนจินบางตัวยังต้องการข้อความถอดเสียงที่ตรงกับคลิปอ้างอิงนั้นทุกคำ
  3. เซิร์ฟเวอร์ภายในเครื่องแปลงเสียงอ้างอิงเป็นพรอมป์ต์ผู้พูด embedding หรือโปรไฟล์เสียง
  4. SSN ส่งข้อความแชตสดไปยังปลายทางโดยใช้ ttsprovider=customtts.
  5. เซิร์ฟเวอร์ส่งไฟล์เสียงที่เล่นได้กลับมา โดยทั่วไปเป็น WAV หรือ MP3 แล้ว SSN เล่นเสียงในแผงด็อก/แหล่งข้อมูลเบราว์เซอร์
ใช้เฉพาะเสียงที่ได้รับความยินยอมแล้ว การโคลนเสียงอาจฟังเหมือนบุคคลจริง จึงควรใช้เฉพาะเสียงของคุณเอง เสียงที่ได้รับอนุญาต หรือเสียงที่มีสิทธิ์ใช้งานเพื่อวัตถุประสงค์นี้อย่างชัดเจน
ค่าเริ่มต้นของ XTTS-v2 อนุญาตการใช้ที่ไม่ใช่เชิงพาณิชย์ Coqui Public Model License อนุญาตให้ใช้โมเดลและผลลัพธ์เฉพาะที่ไม่ใช่เชิงพาณิชย์ สตรีมที่สร้างรายได้อาจไม่เข้าเงื่อนไข จึงควรตรวจสอบใบอนุญาตหรือขออนุญาตแยกก่อนใช้ XTTS-v2 เชิงพาณิชย์

สำหรับ 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 เฉพาะปลายทางระยะไกล/กำหนดเอง
รูปแบบปลายทางที่เหมาะที่สุดสำหรับ SSN: รับ 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-FastAPI เรียกใช้โมเดล Kokoro 82M เป็นเซิร์ฟเวอร์ภายในเครื่องพร้อม API ที่เข้ากันได้กับ OpenAI ทำงานบน CPU ได้ (ไม่ต้องใช้ GPU) และมีคุณภาพเสียงยอดเยี่ยม

ติดตั้งด้วย Docker

เปิดเทอร์มินัล (Command Prompt, PowerShell หรือ Terminal) แล้วเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:

CPU (ใช้ได้กับคอมพิวเตอร์ทุกเครื่อง):

docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

GPU (เฉพาะ NVIDIA — สังเคราะห์เสียงเร็วกว่า):

docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
การเรียกใช้ครั้งแรก: Docker จะดาวน์โหลดอิมเมจ (~1.5–2 GB) เพียงครั้งเดียว หลังจากนั้นเซิร์ฟเวอร์จะเริ่มได้ในไม่กี่วินาที

ตรวจสอบว่าเซิร์ฟเวอร์ทำงานอยู่

เปิดเบราว์เซอร์แล้วไปที่ http://localhost:8880/web/— คุณควรเห็นหน้าเว็บควบคุมที่ใช้ทดสอบเสียงได้

เสียงที่มีให้เลือก

มีเสียงให้เลือกกว่า 67 เสียง ตัวอย่างเสียงเด่น:

af_bella, af_sarah, af_nicole, af_sky, af_heart (American female) am_adam, am_michael (American male) bf_emma, bf_isabella (British female) bm_george, bm_lewis (British male)

ดูและทดสอบเสียงทั้งหมดได้ที่ http://localhost:8880/web/ เมื่อเซิร์ฟเวอร์ทำงานแล้ว

URL ของ SSN

หาก Kokoro-FastAPI อยู่บนคอมพิวเตอร์เครื่องเดียวกับ OBS:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella

หาก Kokoro-FastAPI อยู่บนคอมพิวเตอร์อีกเครื่อง ให้แทนที่ 192.168.x.x ด้วยที่อยู่ IP ภายใน LAN ของเครื่องนั้น:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://192.168.x.x:8880/v1/audio/speech&voiceopenai=af_bella
ชื่อเสียงของ Kokoro ต่างจากชื่อเสียงของ OpenAI สำหรับ Kokoro-FastAPI ให้ใช้เสียง เช่น af_bella, af_sarah, am_adam, หรือ bf_emma ชื่อ เช่น echo, nova, และ alloy เป็นชื่อแบบ OpenAI/openedai-speech และอาจใช้กับ Kokoro ไม่ได้

ให้เซิร์ฟเวอร์ทำงานต่อเนื่อง

หากต้องการให้ Kokoro-FastAPI ทำงานเบื้องหลังโดยอัตโนมัติต่อเนื่อง ให้ใช้แฟล็ก restart ของ Docker:

docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

จากนี้จะเริ่มโดยอัตโนมัติพร้อม Docker Desktop ทุกครั้งที่รีบูต

การตั้งค่า openedai-speech (Piper และ XTTS-v2)

openedai-speech เปิดให้ใช้ปลายทางที่เข้ากันได้กับ OpenAI /v1/audio/speech ที่ Social Stream ต้องใช้ อิมเมจขนาดเล็กรัน Piper บน CPU ส่วนอิมเมจเต็มรันการโคลนเสียง XTTS-v2 บน GPU ที่รองรับได้

โครงการที่เก็บถาวรแล้ว: openedai-speech ถูกเก็บถาวรในเดือนมกราคม 2026 และระบุว่าตัวเองล้าสมัยเป็นส่วนใหญ่ ยังเป็นตัวอย่างความเข้ากันได้ที่มีประโยชน์ แต่ไม่มีการบำรุงรักษาแล้ว ให้ใช้ภายในเครื่องและอย่าเปิดพอร์ตที่ไม่มีการยืนยันตัวตนสู่อินเทอร์เน็ตสาธารณะ

ตัวเลือก A: Piper แบบเบา

ใช้ตัวเลือกนี้สำหรับเซิร์ฟเวอร์ TTS ที่ใช้เฉพาะ CPU และมีขนาดต่ำกว่า 1 GB โดยไม่มี XTTS-v2 หรือการโคลนเสียง

ติดตั้งด้วย Docker Compose

1
โคลนรีโพซิทอรีหรือสร้างโฟลเดอร์ที่มี docker-compose.min.yml หรือเรียกใช้คำสั่งด้านล่างโดยตรง
2
เรียกใช้อิมเมจขนาดเล็กที่มีเฉพาะ Piper:
docker run -d --restart unless-stopped \ -p 8000:8000 \ ghcr.io/matatonic/openedai-speech-min

หมายเหตุการติดตั้งจากซอร์สบน Windows

หากเรียกใช้ openedai-speech จากซอร์สในเครื่องแทน Docker ให้เพิ่มโฟลเดอร์สคริปต์ของ virtual environment ไปยัง PATH ก่อนเริ่มเซิร์ฟเวอร์ มิฉะนั้นคำขออาจส่งกลับ HTTP 500 เพราะเซิร์ฟเวอร์ไม่พบ piper.exe หรือ ffmpeg.exe.

cd openedai-speech $env:Path = "$PWD\.venv\Scripts;$env:Path" .\.venv\Scripts\python.exe speech.py --xtts_device none -H 127.0.0.1 -P 8000

เสียงที่มีให้เลือก

openedai-speech ใช้ชื่อเสียงแบบ OpenAI ที่จับคู่กับเสียง Piper:

alloy, echo, fable, onyx, nova, shimmer

URL ของ SSN

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova

ตัวเลือก B: โคลนเสียงด้วย XTTS-v2

XTTS-v2 เป็นโมเดล ไม่ใช่เว็บ API ให้ใช้เซิร์ฟเวอร์ openedai-speech แบบเต็มเพื่อโหลดโมเดล เลือกเสียงอ้างอิงที่บันทึกไว้ รับข้อความแชตจาก SSN และส่งเสียงที่เล่นได้กลับมา เซิร์ฟเวอร์รายงานว่าใช้ VRAM ของ GPU ประมาณ 4 GB ในทางปฏิบัติ ประมวลผลด้วย CPU ได้แต่ช้า

อย่าใช้ openedai-speech-min สำหรับ XTTS-v2 อิมเมจขนาดเล็กมีเฉพาะ Piper ส่วน XTTS-v2 ต้องติดตั้งแบบเต็มและใช้ model=tts-1-hd ในคำขอเสียงพูดแต่ละครั้ง
1
โคลนเซิร์ฟเวอร์ที่เก็บถาวรแล้ว สร้างไฟล์ environment แล้วเริ่มชุด Docker Compose เต็มรูปแบบที่เปิดใช้ GPU:
git clone https://github.com/matatonic/openedai-speech.git cd openedai-speech Copy-Item sample.env speech.env docker compose up -d

บน macOS หรือ Linux ให้ใช้ cp sample.env speech.env แทน Copy-Item Docker ต้องเข้าถึง GPU ที่รองรับได้ โมเดลจะดาวน์โหลดเมื่อใช้งานครั้งแรก

2
เตรียมคลิปอ้างอิงเสียงสะอาดที่ได้รับความยินยอมแล้ว เริ่มจาก WAV แบบโมโน 22050 Hz ความยาว 6–30 วินาทีได้:
ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
3
เพิ่มเสียงที่โคลนไว้ใต้รายการเดิม tts-1-hd ในไฟล์ config/voice_to_speaker.yaml:
tts-1-hd: me: model: xtts speaker: voices/me.wav language: en

เก็บเสียงเดิมทั้งหมดที่แสดงอยู่ใต้ tts-1-hd เปลี่ยน me เป็นชื่อเสียงที่ต้องการให้ SSN ส่ง และใช้รหัสภาษา XTTS ที่ถูกต้องเมื่อจำเป็น

4
เริ่มเซิร์ฟเวอร์ใหม่ แล้วตั้งให้แผงด็อก SSN หรือโอเวอร์เลย์ข้อความเด่นเชื่อมต่อไปยังเซิร์ฟเวอร์:
docker compose restart
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8000/v1/audio/speech&openaimodel=tts-1-hd&voiceopenai=me&openaiformat=wav
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.

บริดจ์ TTS ภายในเครื่อง

บริดจ์เป็นโปรแกรมช่วยขนาดเล็กภายในเครื่อง รับคำขอจากเบราว์เซอร์ SSN ติดต่อเซิร์ฟเวอร์ TTS แล้วส่งเสียงกลับให้ SSN พร้อมเฮดเดอร์ที่เหมาะกับเบราว์เซอร์

หลักการที่ง่ายที่สุด: ให้เรียกใช้บริดจ์บนคอมพิวเตอร์เครื่องเดียวกับ OBS จากนั้น OBS จะใช้ http://127.0.0.1:8124/v1/audio/speech แม้ว่าเซิร์ฟเวอร์ TTS จริงจะอยู่บนคอมพิวเตอร์อีกเครื่องก็ตาม
แผนภาพแสดง OBS เรียกบริดจ์ภายในเครื่อง และบริดจ์เรียกเซิร์ฟเวอร์ TTS
แหล่งข้อมูลเบราว์เซอร์ใน OBS ติดต่อบริดจ์บนคอมพิวเตอร์ OBS จากนั้นบริดจ์จึงเรียก Kokoro-FastAPI, openedai-speech หรือเซิร์ฟเวอร์อื่นได้

โฟลเดอร์เริ่มต้นแบบสแตนด์อโลนคือ local-tts-bridge/ ดู README ของบริดจ์ สำหรับตัวเลือกการเริ่มต้นทั้งหมด

พร็อกซีที่เข้ากันได้กับ OpenAI

Windows PowerShell เมื่อเซิร์ฟเวอร์ TTS อยู่บนคอมพิวเตอร์เครื่องเดียวกันนี้:

$env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

Windows PowerShell เมื่อเซิร์ฟเวอร์ TTS อยู่บนคอมพิวเตอร์อีกเครื่อง:

$env:SSN_TTS_TARGET="http://192.168.x.x:8880/v1/audio/speech" npm run local-tts-bridge

เทอร์มินัล macOS/Linux:

SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" npm run local-tts-bridge

จากนั้นตั้ง URL ของ OBS dock.html ไปยังบริดจ์:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella

โหมดพร็อกซี GPT-SoVITS

GPT-SoVITS ใช้รูปแบบ JSON เฉพาะของตนสำหรับ /tts ดังนั้นบริดจ์จึงแปลงคำขอ SSN ที่เข้ากันได้กับ OpenAI ให้เป็นเนื้อหาคำขอ GPT-SoVITS ได้

$env:SSN_TTS_REF_AUDIO_PATH="C:\voices\speaker.wav" $env:SSN_TTS_REF_TEXT="Reference audio transcript here." $env:SSN_TTS_TARGET="http://127.0.0.1:9880/tts" npm run local-tts-bridge -- --mode gptsovits
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&openaiformat=wav

โหมดพร็อกซีเซิร์ฟเวอร์ F5-TTS

ตัวครอบเซิร์ฟเวอร์ F5-TTS บางตัวเปิดให้ใช้ /synthesize_speech/?text=...&voice=... แทนปลายทางที่เข้ากันได้กับ OpenAI บริดจ์แปลงคำขอของ SSN ให้เป็นรูปแบบคิวรีนั้นได้

$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/" npm run local-tts-bridge -- --mode f5
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=default_en&openaiformat=wav
ปลายทางบริดจ์: http://127.0.0.1:8124/v1/audio/speech เปลี่ยนพอร์ตด้วย SSN_TTS_BRIDGE_PORT=8125 หากจำเป็น

การเชื่อมต่อกับ Social Stream Ninja

เซิร์ฟเวอร์ที่โฮสต์เองทั้งหมดด้านบนใช้วิธีเชื่อมต่อเดียวกัน คือ ปลายทาง OpenAI TTS โดยใช้ URL ภายในเครื่องแบบกำหนดเอง

พารามิเตอร์ 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.

ตัวอย่าง URL แบบเต็ม

Kokoro-FastAPI:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8880/v1/audio/speech&voiceopenai=af_bella&openaispeed=1.1

openedai-speech:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova

kokoro-web:

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:3000/api/v1/audio/speech&voiceopenai=af_bella

ตัวเลือก TTS เพิ่มเติม

ใช้ได้กับผู้ให้บริการ 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 ตัดเสียงพูดหลังจากจำนวนอักขระนี้โดยตั้งใจ ลบตัวเลือกนี้หากข้อความถูกอ่านไม่จบ
ไม่ต้องมีคีย์ API เมื่อใช้เซิร์ฟเวอร์ภายในเครื่อง (URL ที่ไม่ใช่ openai.com) Social Stream Ninja ส่งคำขอโดยไม่มีเฮดเดอร์ Authorization คุณไม่ต้องตั้งค่าคีย์

ตัวเลือกเบราว์เซอร์แบบในตัวที่ควรรองรับ

SSN รองรับ speech synthesis ของ OS/เบราว์เซอร์ผ่าน speechSynthesis รวมถึง Kokoro, Piper, Kitten และ eSpeak แบบในตัว สิ่งที่น่าเพิ่มในฝั่งเบราว์เซอร์ในอนาคตมากที่สุดคือการเลือกอุปกรณ์ส่งออกเสียงเมื่อ setSinkId ใช้งานได้ ตัวเลือกเสียง Piper เพิ่มเติม และเส้นทางเล่นเสียงแบบทยอยสตรีมโดยเฉพาะสำหรับเซิร์ฟเวอร์ที่สตรีมเสียงเป็นช่วง ๆ ได้

นำเสียงเข้าสู่ OBS

วิธีเก็บเสียง TTS ใน OBS ขึ้นอยู่กับวิธีที่คุณใช้ Social Stream Ninja

วิธีที่ 1 — แหล่งข้อมูลเบราว์เซอร์ใน OBS แนะนำ

นี่คือวิธีที่ง่ายที่สุดและใช้ได้กับ ผู้ให้บริการ TTS ทั้งหมด (แบบในตัวและเซิร์ฟเวอร์ที่โฮสต์เอง)

1
ใน OBS ให้เพิ่ม แหล่งเบราว์เซอร์ (Browser Source)
2
ตั้ง URL เป็น dock.html URL ที่มีพารามิเตอร์ TTS
3
ตรวจสอบ "ควบคุมเสียงผ่าน OBS (Control audio via OBS)" ในการตั้งค่าแหล่งข้อมูลเบราว์เซอร์
4
คลิก ตกลง (OK)— เสียง TTS จะปรากฏเป็นแหล่งข้อมูลเสียงใน OBS ที่ปรับระดับหรือกำหนดเส้นทางได้
5
คลิกแหล่งข้อมูลเบราว์เซอร์หนึ่งครั้งในหน้าตัวอย่างเพื่ออนุญาตให้เบราว์เซอร์เล่นเสียงอัตโนมัติ
เหตุผลที่วิธีนี้ได้ผล: TTS แบบในตัวและ TTS จากเซิร์ฟเวอร์ที่โฮสต์เองเล่นเสียงผ่าน audio context ของเบราว์เซอร์ทั้งคู่ (ไม่ใช่ระบบสังเคราะห์เสียงของ OS) OBS เก็บเสียงเบราว์เซอร์โดยตรงได้เมื่อเลือก "Control audio via OBS"

วิธีที่ 2 — แอปเดสก์ท็อป SSN + เสียงเดสก์ท็อป

หากใช้แอปเดสก์ท็อป Social Stream Ninja แบบสแตนด์อโลน (ไม่ใช่แหล่งข้อมูลเบราว์เซอร์ใน OBS):

1
เสียง TTS เล่นจากแอปผ่านลำโพง/หูฟังของระบบ
2
ใน OBS ให้เพิ่มแหล่งข้อมูลประเภท เก็บเสียงขาเข้า (Audio Input Capture) หรือ เก็บเสียงเดสก์ท็อป (Desktop Audio Capture) .
3
หากต้องการแยก TTS ออกจากเสียงเดสก์ท็อปอื่น ให้ใช้สายเสียงเสมือน:
  • Windows: VB-Audio Virtual Cable (ฟรี)
  • ตั้งค่า CABLE Input เป็นเอาต์พุตของแอป SSN ในการตั้งค่าเสียง Windows
  • จับข้อมูล CABLE Output ใน OBS ด้วย Audio Input Capture

ลิงก์การกำหนดเส้นทางเสียง Windows

การกำหนดเส้นทางเสียงรายแอปใน Windows 10

1
เปิด Sound Settings > App volume and device preferences.
2
หาเบราว์เซอร์หรือแอป SSN ในรายการแอป
3
ตั้ง Output เป็น CABLE Input (VB-Audio Virtual Cable).
4
ใน OBS ให้เพิ่ม เก็บเสียงขาเข้า (Audio Input Capture) แล้วเลือก CABLE Output.

การกำหนดเส้นทางเสียงรายแอปใน Windows 11

1
เปิด Settings > System > Sound > Volume Mixer.
2
หาเบราว์เซอร์หรือแอป SSN
3
ตั้ง Output device เป็น CABLE Input (VB-Audio Virtual Cable).
4
ใน OBS ให้เพิ่ม เก็บเสียงขาเข้า (Audio Input Capture) แล้วเลือก CABLE Output.

ซอฟต์แวร์ Audio Router

Audio Router ส่งเสียงจากแอปหนึ่งไปยังสายเสียงเสมือนได้ แต่เป็นซอฟต์แวร์เก่า หากการกำหนดเส้นทางเสียงรายแอปของ Windows ใช้งานได้ ให้ใช้วิธีนั้นก่อน

1
ติดตั้ง Audio Router
2
ส่งเสียงเบราว์เซอร์หรือแอป SSN ไปยัง CABLE Input.
3
ใน OBS ให้เก็บเสียงจาก CABLE Output.

การกำหนดเส้นทางขั้นสูงด้วย Voicemeeter

Voicemeeter เหมาะที่สุดเมื่อคุณต้องการฟัง TTS ภายในเครื่อง ส่งเสียงเข้า OBS และแยกจากเสียงเพลง/เกม

1
ติดตั้ง Voicemeeter แล้วตั้งเป็นอุปกรณ์ส่งออกเสียงเริ่มต้นของ Windows
2
ตั้ง Hardware Out เป็นลำโพง/หูฟังของคุณ
3
ส่งเสียงเอาต์พุตเสมือนเข้า OBS เป็นแหล่งข้อมูล Audio Input Capture
TTS ของระบบ (?speech=en-US โดยไม่ระบุผู้ให้บริการ) ขึ้นอยู่กับเสียงที่เบราว์เซอร์เปิดให้ใช้ OBS อาจไม่แสดงเสียงให้เลือก หรือแสดงรายชื่อเสียงแต่ไม่สร้างเสียงที่เก็บได้ ให้ทดสอบการอ่านและไฟล์บันทึกของ OBS แยกกัน ใช้ผู้ให้บริการด้านบนสักราย (kokoro, piper เป็นต้น) แทน

ตารางเปรียบเทียบ

ตัวเลือก การตั้งค่า คุณภาพ ส่วนตัว OBS (แหล่งข้อมูลเบราว์เซอร์) ต้องใช้ GPU ค่าใช้จ่าย
Kokoro แบบในตัว ไม่มี ⭐⭐⭐⭐⭐ ใช่ ใช่ ไม่ต้องใช้ (แต่เร็วขึ้นถ้ามี) ฟรี
Piper แบบในตัว ไม่มี ⭐⭐⭐⭐ ใช่ ใช่ ไม่มี ฟรี
Kitten แบบในตัว ไม่มี ⭐⭐⭐ ใช่ ใช่ ไม่มี ฟรี
eSpeak แบบในตัว ไม่มี ⭐⭐ ใช่ ใช่ ไม่มี ฟรี
Kokoro-FastAPI Docker ⭐⭐⭐⭐⭐ ใช่ ใช่ ไม่ต้องใช้ (เลือกใช้ได้) ฟรี
openedai-speech Docker ⭐⭐⭐⭐ ใช่ ใช่ ไม่มี ฟรี
ElevenLabs คีย์ API ⭐⭐⭐⭐⭐ ไม่มี ใช่ ไม่มี แพ็กเกจแบบชำระเงิน
TTS ของระบบ ไม่มี ⭐⭐ ใช่ ไม่* ไม่มี ฟรี

* TTS ของระบบต้องส่งเสียงผ่านสายเสียงเสมือนเพื่อให้ OBS เก็บเสียงได้

การแก้ปัญหา

รายการตรวจสอบรูปแบบภาพหน้าจอสำหรับแก้ปัญหา TTS ภายในเครื่อง
เมื่อ TTS ทำงานในที่หนึ่งแต่อีกที่ไม่ทำงาน ให้ตรวจสอบเครื่อง ปลายทาง เสียงที่เลือก สิทธิ์เบราว์เซอร์ และการเก็บเสียงใน OBS ตามลำดับ

การทดสอบในแอป SSN ทำงาน แต่ OBS ไม่มีเสียง

การทดสอบในแอปยืนยันเพียงว่าแอปเข้าถึงเซิร์ฟเวอร์ได้ แหล่งข้อมูลเบราว์เซอร์ใน OBS ยังต้องเข้าถึงปลายทางและเล่นเสียงได้เอง

อ่านเพียงตัวอักษรแรกหรือคำแรก ๆ

เซิร์ฟเวอร์ภายในเครื่องไม่ตอบสนอง

CORS หรือเครือข่ายภายในถูกบล็อก

หากเบราว์เซอร์แจ้งว่าคำขอถูกบล็อกด้วย CORS, local network access, private network access หรือ failed fetch เซิร์ฟเวอร์ TTS อาจไม่ได้รับคำขอนั้นเลย

เสียงผิดหรือไม่พบเสียง

เสียงเล่นได้ แต่ OBS เก็บเสียงไม่ได้

ไม่พบอิมเมจ Docker

แท็กอิมเมจ Docker อาจเปลี่ยนแปลง หากคำสั่งในคู่มือนี้ใช้ไม่ได้ ให้ดูแท็กปัจจุบันจากหน้าโครงการ:

ตัวเลือก TTS เพิ่มเติม: สำหรับ TTS ระดับพรีเมียมบนคลาวด์ (ElevenLabs, Google Cloud, Speechify) และเอกสารพารามิเตอร์ URL ฉบับเต็ม ดู คู่มือเสียง TTS.