로컬 AI 음성으로 라이브 채팅을 읽어 보세요. 설치가 필요 없는 옵션부터 시작한 다음 필요할 때만 로컬 서버를 사용하세요.
Social Stream Ninja는 로컬 AI 음성 합성을 사용해 채팅 메시지를 소리 내어 읽을 수 있습니다. '로컬'은 두 가지 의미가 있습니다. 브라우저 안에서 음성이 실행되거나, 자신의 컴퓨터에서 작은 음성 읽기 서버를 실행하는 것입니다.
두 가지 방식이 있습니다:
여러 고품질 AI 음성이 Social Stream Ninja에 바로 내장되어 있습니다. WebAssembly 또는 ONNX를 사용해 브라우저에서 실행되므로 서버, Docker, 설치가 필요하지 않습니다.
URL 매개변수만 추가하면 됩니다.
컴퓨터에서 로컬 음성 읽기 서버를 실행하고 Social Stream Ninja가 여기에 연결하도록 설정하세요. 더 많은 음성, 음성 복제, 서버 측 제어를 사용할 수 있습니다.
Social Stream의 내장 OpenAI 호환 엔드포인트 기능을 사용합니다.
대부분의 방송자에게 가장 간단한 방법입니다:
&speech=en-US&ttsprovider=kokoro 또는 &speech=en-US&ttsprovider=kitten — 추가할 위치: dock.html URL입니다.Testing local TTS입니다. Kokoro나 Piper를 사용한다면 최초 모델 다운로드가 끝날 때까지 기다리세요.가장 흔한 로컬 음성 읽기 설정 실수입니다.
localhost 그리고 127.0.0.1 은 항상 '바로 이 컴퓨터'를 뜻합니다. OBS와 Kokoro가 서로 다른 컴퓨터에서 실행된다면, 127.0.0.1 은 OBS URL 안에서 Kokoro 컴퓨터가 아닌 OBS 컴퓨터를 가리킵니다.
127.0.0.1 는 음성 읽기 서버와 오디오를 재생하는 페이지가 같은 컴퓨터에 있을 때만 사용하세요. 서버가 다른 컴퓨터에 있다면 해당 컴퓨터의 LAN IP 주소를 사용하세요.| 사용 환경 | 사용할 엔드포인트 |
|---|---|
| OBS와 Kokoro가 같은 컴퓨터에서 실행되는 경우 | http://127.0.0.1:8880/v1/audio/speech |
| Kokoro가 홈 네트워크의 다른 컴퓨터에서 실행되는 경우 | http://192.168.x.x:8880/v1/audio/speech를 사용하고 Kokoro 컴퓨터의 LAN IP를 입력하세요. |
| SSN 데스크톱 앱의 테스트 버튼은 작동하지만 OBS에서 소리가 나지 않음 | OBS 자체에서 접근 가능한 엔드포인트가 필요합니다. 앱 테스트가 성공했다고 OBS에서 서버에 접근할 수 있다는 뜻은 아닙니다. |
Linux, macOS, Windows에서는 방화벽이 포트를 허용하고 Docker가 다음 옵션으로 포트를 공개했는지도 확인하세요: -p 8880:8880.
확장 프로그램 팝업에서 음성 읽기 제공업체 선택기를 열고 다음을 선택하세요: 사용자 지정 / 로컬 음성 읽기 엔드포인트 (Custom / Local TTS Endpoint)을 선택하세요. OpenAI 호환 로컬 엔드포인트 입력란과 이 가이드로 돌아오는 링크가 표시됩니다.
SSN은 로컬/자체 호스팅 음성 읽기 서버를 OpenAI 호환 음성 엔드포인트처럼 취급합니다. 기본 흐름은 다음과 같습니다:
예를 들어 ttsprovider=customtts, localtts, 또는 openai인 경우 SSN이 설정된 엔드포인트에 JSON POST를 보냅니다:
CORS는 브라우저의 권한 확인입니다. 쉽게 말해 음성 읽기 서버가 브라우저에 '이 페이지는 내게 오디오를 요청해도 된다'고 알려야 합니다. 이 허용이 없으면 Kokoro나 다른 음성 읽기 서버에 요청이 도착하기도 전에 차단될 수 있습니다.
dock.html 을 Chrome 또는 OBS에서 로드하면 CORS가 영향을 줄 수 있습니다.https://beta.socialstream.ninja/dock.html인 경우 Chrome이 로컬 또는 사설 HTTP 주소에 대한 호출도 차단할 수 있습니다.서버가 브라우저 요청을 허용하지 않으면 다음을 실행하세요: SSN 로컬 음성 읽기 브리지 을 실행하고 SSN이 다음을 가리키도록 하세요: http://127.0.0.1:8124/v1/audio/speech입니다. OBS에서는 OBS와 같은 컴퓨터에서 브리지를 실행하는 구성이 가장 쉽습니다.
| 응답 | SSN 지원 | 참고 |
|---|---|---|
| 바이너리 오디오 | 예 | 가장 좋은 방식입니다. 반환할 유형: audio/mpeg, audio/wav, audio/ogg, audio/aac또는 브라우저에서 재생 가능한 다른 오디오 유형을 반환하세요. |
| 오디오 URL이 포함된 JSON | 예 | SSN이 확인하는 필드: url, audio_url, output_url, 중첩된 data.url, 그리고 첫 번째 data[] 항목입니다. |
| base64 오디오가 포함된 JSON | 예 | SSN이 확인하는 필드: audio, audio_data, audioContent, b64_json, 중첩된 data 필드와 데이터 URL입니다. |
| 원시 PCM | 래퍼를 사용하는 경우에만 | PCM을 WAV 파일이나 base64 WAV로 반환하세요. 브라우저 오디오 요소는 원시 PCM 바이트를 직접 안정적으로 재생할 수 없습니다. |
mp3 는 작은 파일 크기와 폭넓은 브라우저 지원에 적합하며, wav 를 로컬 음성 복제 서버 및 브리지 테스트에 사용하고, opus 는 서버와 브라우저가 모두 지원할 때만 사용하세요.
SSN은 현재 사용자 지정/로컬 음성 읽기 엔드포인트의 점진적 재생을 지원하지 않습니다. 응답 blob 또는 JSON 오디오 페이로드를 기다린 뒤 재생합니다. 일부 상위 서버는 스트리밍 엔드포인트를 제공하지만 SSN의 현재 OpenAI 호환 경로는 재생 전에 버퍼링합니다.
실용적인 결론은 채팅 음성 읽기를 짧게 유지하는 것입니다. 스트리밍을 지원하려면 스트리밍 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= 를 Social Stream에 추가하세요: dock.html URL:
현재 SSN에는 영어 28개, 스페인어 3개, 브라질 포르투갈어 3개의 Kokoro 음성이 있습니다. 다음 매개변수로 음성을 지정하세요: &voicekokoro=:
스페인어 예시:
포르투갈어 예시:
다음으로 음성 모델을 지정하세요: &pipervoice=:
포르투갈어 및 스페인어 Piper 음성을 사용할 수 있습니다:
Chrome 확장 프로그램, OBS 브라우저 소스, 독립 실행형 Social Stream Ninja 데스크톱 앱은 모두 동일한 dock.html 음성 읽기 URL 매개변수를 사용합니다. 중요한 차이는 소리가 생성되는 위치입니다.
| 사용 환경 | 로컬 음성 읽기 동작 | 오디오 캡처 |
|---|---|---|
| Chrome 확장 프로그램 / OBS 브라우저 소스 | SSN 브리지를 사용하지 않는 한 브라우저 fetch 요청에는 로컬 서버의 CORS 허용이 필요합니다. | OBS 브라우저 소스에서 'OBS를 통해 오디오 제어'를 사용하세요. |
| 독립 실행형 데스크톱 앱 | 같은 제공업체 설정을 사용합니다. 앱의 로컬 파일 창은 CORS 제약이 더 적지만 브라우저 형태의 요청을 거부하는 서버에는 여전히 브리지가 가장 안전한 방법입니다. | 데스크톱/앱 오디오를 캡처하거나 앱 출력을 가상 오디오 케이블로 보내세요. |
| 데스크톱 앱의 내장 Kokoro | 앱은 로컬 ninjafy.tts 방식으로 Kokoro를 사용하면 브라우저 모델 로드에만 의존하지 않아도 됩니다. |
앱에서 오디오를 재생하므로 데스크톱/앱 오디오 캡처를 사용하세요. |
dock.html URL을 OBS에 넣으면 음성 읽기 서버에 접근하고 오디오를 재생해야 하는 주체는 OBS입니다.
더 많은 음성, 음성 복제, 여러 도구에서 재사용할 전용 서버가 필요하다면 로컬 음성 읽기 서버를 실행할 수 있습니다. Social Stream Ninja는 내장된 다음 기능으로 연결합니다: 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 서버 | 음성 복제, 웹 UI 옵션, OpenAI 호환 API, 긴 텍스트 처리 도구. | 일부 빌드는 CPU보다 CUDA/GPU 지원이 더 원활합니다. 설정은 서버 포크마다 다릅니다. |
| GPT-SoVITS | 짧은 참조 및 대본 지원을 통한 강력한 음성 복제/제어. | 기본적으로 OpenAI 호환이 아닙니다. SSN 브리지 모드를 사용하세요. |
| F5-TTS | 프롬프트 WAV + 대본을 이용한 자연스러운 제로샷 음성 복제. | 공식 프로젝트는 단순한 OpenAI 엔드포인트가 아닙니다. 래퍼 또는 브리지 모드를 사용하세요. |
| Qwen3-TTS | 더 작은 0.6B/1.7B 모델을 포함한 최신 음성 복제 및 음성 설계 기능. | 라이브러리/데모가 우선이며 SSN에서 사용하려면 래퍼가 필요합니다. |
| MisoTTS | 고성능 프롬프트 기반 음성 생성. | VRAM 6 GB 로컬 환경에 적합하지 않습니다. 필요하면 원격/사용자 지정 호스팅을 사용하세요. |
음성 복제는 별도의 SSN 모드가 아닙니다. 일부 로컬 음성 읽기 서버 내부의 기능입니다. SSN은 채팅 텍스트를 로컬 엔드포인트로 보내고, 서버는 저장된 참조 오디오 파일, 음성 프로필 또는 브리지 설정에서 복제 음성을 선택합니다.
ttsprovider=customtts.VRAM이 6 GB 이하라면 소형 제로샷 음성 복제 모델과 OpenAI 호환 서버를 먼저 고려하세요. 더 큰 모델도 다른 곳에 호스팅하면 같은 SSN 엔드포인트를 통해 사용할 수 있습니다.
| 옵션 | 음성 복제 | VRAM 6 GB에 적합 | SSN용 API 경로 |
|---|---|---|---|
| Qwen3-TTS 0.6B Base | 3초 참조 오디오 | 가능성 높음 | OpenAI 호환 래퍼를 사용한 뒤 다음을 사용하세요: ttsprovider=customtts |
| XTTS-v2 / openedai-speech | 짧은 WAV 참조 음성 | 예, openedai-speech 안내 기준 약 4 GB | /v1/audio/speech |
| Chatterbox Turbo / Server | 참조 오디오 기반 음성 복제 | Turbo / 작은 청크 사용 시 가능성 높음 | OpenAI 호환 서버 빌드 또는 다음 브리지 모드: |
| GPT-SoVITS | 5초 제로샷, 1분 퓨샷 | fp16 / 경량 설치 시 가능성 높음 | 사용: scripts/local-tts-bridge.cjs --mode gptsovits |
| F5-TTS | 프롬프트 WAV + 대본 | 가능할 수 있음. 빌드와 보코더에 따라 다름 | 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 래퍼 및 대부분의 프록시 서비스가 이에 해당합니다.
이는 실용적인 시작 기준이며 확정적인 보장은 아닙니다. 모델 버전, 양자화, 텍스트 길이, Docker 이미지, 백그라운드 앱에 따라 메모리 사용량이 달라질 수 있습니다.
| 옵션 | 실용적인 최소 컴퓨터 사양 | 좋은 선택 | 참고 |
|---|---|---|---|
| 시스템 음성 읽기 / eSpeak | 최신 PC 모두 | 모든 PC | 빠르지만 품질이 낮고 음성 복제는 지원하지 않습니다. |
| 내장 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 | WebGPU 지원 GPU 또는 빠른 CPU, RAM 8~16 GB | 별도 설정 없이 가장 좋은 품질. 처음 로드할 때 모델 리소스를 다운로드합니다. |
| Kokoro-FastAPI | CPU Docker 호스트, RAM 8 GB | NVIDIA GPU 선택 사항, RAM 8~16 GB | 브라우저에서 모델을 로드하기 적합하지 않을 때 좋은 로컬 서버입니다. |
| openedai-speech Piper | CPU, RAM 4~8 GB | CPU, RAM 8 GB | 경량 OpenAI 호환 서버. |
| openedai-speech XTTS | VRAM 약 4 GB NVIDIA GPU, RAM 8~16 GB | VRAM 6 GB 이상 NVIDIA GPU, RAM 16 GB | 음성 복제 방식. CPU도 가능하지만 느립니다. |
| Chatterbox 서버 | 일부 빌드는 CPU로 작동하지만 느림 | VRAM 6 GB 이상 NVIDIA GPU, RAM 16 GB | 음성 복제나 긴 텍스트 처리에는 GPU를 사용하세요. |
| GPT-SoVITS / F5-TTS / Qwen3-TTS | CPU는 시험용으로만 사용, 느림 | 소형/최적화 모델에 VRAM 6 GB 이상 NVIDIA GPU, RAM 16 GB | 래퍼 선택과 모델 크기가 중요합니다. 추가 설정이 필요할 수 있습니다. |
| MisoTTS 8B | VRAM 6 GB의 로컬 환경에서는 권장하지 않음 | VRAM 24 GB 또는 원격 호스트 | 저장소에서는 대화형 사용에 VRAM이 많은 GPU를 권장합니다. |
SSN 호환성을 확인한 자체 호스팅 음성 복제 대상입니다. 로컬 엔드포인트 경로는 다음 두 환경에서 시험했습니다: dock.html 그리고 featured.html.
SSN은 직접 바이너리 오디오 응답, base64 오디오가 포함된 JSON 응답, 오디오 URL이 포함된 JSON 응답을 받습니다. 현재 사용자 지정/로컬 재생은 반환된 오디오를 버퍼링한 뒤 재생하며 점진적 스트리밍 재생은 아직 지원하지 않습니다.
| 서버 | SSN 사용 방식 | 참고 |
|---|---|---|
| openedai-speech | 직접 연결 또는 브리지 | OpenAI 호환 /v1/audio/speech입니다. Piper 모드는 다음 환경에서 실제 CPU 합성으로 시험했습니다: dock.html 그리고 featured.html를 직접 연결과 브리지 연결로 시험했습니다. Windows에서 소스로 실행한다면 가상 환경의 Scripts 폴더가 다음에 있는지 확인하세요: PATH 에 추가하여 piper.exe 그리고 ffmpeg.exe 을 찾을 수 있도록 하세요. |
| chatterbox-tts-api | 직접 연결 또는 브리지 | OpenAI 호환 /v1/audio/speech입니다. 설정한 참조 오디오를 음성 복제에 사용합니다. API 형식을 직접 연결과 브리지 연결로 시험했습니다. |
| Chatterbox-TTS-Server | 직접 연결 또는 브리지 | OpenAI 호환 엔드포인트와 웹 UI입니다. 다음을 사용해 실제 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 는 OpenAI 호환 API를 제공하는 로컬 서버로 Kokoro 82M 모델을 실행합니다. CPU에서 작동하며 GPU가 필요하지 않고 음성 품질이 뛰어납니다.
터미널(명령 프롬프트, PowerShell 또는 Terminal)을 열고 다음 중 하나를 실행하세요:
브라우저를 열고 다음 주소로 이동하세요: http://localhost:8880/web/— 음성을 시험할 수 있는 웹 UI가 표시되어야 합니다.
67개 이상의 음성을 사용할 수 있습니다. 주요 예:
다음에서 모든 음성을 살펴보고 시험하세요: http://localhost:8880/web/ 를 서버 실행 후 여세요.
Kokoro-FastAPI가 OBS와 같은 컴퓨터에 있다면:
Kokoro-FastAPI가 다른 컴퓨터에 있으면 다음 값을 바꾸세요: 192.168.x.x 을 해당 컴퓨터의 LAN IP 주소로 바꾸세요:
af_bella, af_sarah, am_adam, 또는 bf_emma등을 사용하세요. 다음과 같은 이름은 echo, nova, 그리고 alloy OpenAI/openedai-speech 방식의 이름이며 Kokoro에서 작동하지 않을 수 있습니다.
Kokoro-FastAPI가 백그라운드에서 자동으로 계속 실행되도록 하려면 Docker의 다시 시작 플래그를 사용하세요:
이제 재부팅할 때마다 Docker Desktop과 함께 자동으로 시작됩니다.
openedai-speech 는 OpenAI 호환 /v1/audio/speech 엔드포인트를 제공합니다. 소형 이미지는 CPU에서 Piper를 실행하며 전체 이미지는 지원 GPU에서 XTTS-v2 음성 복제를 실행할 수 있습니다.
1 GB 미만의 CPU 전용 음성 읽기 서버를 원한다면 이 옵션을 사용하세요. XTTS-v2나 음성 복제는 포함하지 않습니다.
docker-compose.min.yml입니다. 또는 아래 명령을 직접 실행하세요.
Docker 대신 로컬 체크아웃에서 openedai-speech를 실행한다면 가상 환경의 스크립트 폴더를 다음에 추가하세요: PATH 에 추가한 뒤 서버를 시작하세요. 이를 하지 않으면 서버가 다음을 찾지 못해 요청에 HTTP 500이 반환될 수 있습니다: piper.exe 또는 ffmpeg.exe.
openedai-speech는 Piper 음성에 매핑된 OpenAI 방식 음성 이름을 사용합니다:
XTTS-v2 자체는 웹 API가 아닌 모델입니다. 전체 openedai-speech 서버로 모델을 로드하고 저장된 참조 음성을 선택하고 SSN의 채팅 텍스트를 받아 재생 가능한 오디오를 반환하세요. 서버 안내에 따르면 실용적인 GPU VRAM 기준은 약 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가 직접 요청을 차단하면 다음을 실행하세요: 로컬 음성 읽기 브리지 를 OBS 컴퓨터에서 실행하고 모델 및 음성 매개변수는 유지한 채 다음 값만 변경하세요: openaiendpoint 대상: http://127.0.0.1:8124/v1/audio/speech.
브리지는 작은 로컬 보조 프로그램입니다. SSN의 브라우저 요청을 받아 음성 읽기 서버와 통신한 뒤 브라우저에 맞는 헤더와 함께 오디오를 SSN에 반환합니다.
http://127.0.0.1:8124/v1/audio/speech로 지정합니다. 실제 음성 읽기 서버가 다른 컴퓨터에 있어도 동일합니다.
독립 실행형 시작 폴더는 local-tts-bridge/입니다. 참고: 브리지 README 에서 모든 시작 옵션을 확인하세요.
음성 읽기 서버가 같은 컴퓨터에 있는 경우 Windows PowerShell:
음성 읽기 서버가 다른 컴퓨터에 있는 경우 Windows PowerShell:
macOS/Linux 터미널:
그런 다음 OBS의 dock.html URL이 브리지를 가리키도록 설정하세요:
GPT-SoVITS는 자체 /tts JSON 형식을 사용하므로 브리지가 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 (필요한 경우).
위의 모든 자체 호스팅 서버는 같은 연결 방식인 Social Stream의 내장 OpenAI 음성 읽기 엔드포인트 기능과 사용자 지정 로컬 URL을 사용합니다.
| 매개변수 | 값 | 설명 |
|---|---|---|
ttsprovider |
customtts 또는 openai |
OpenAI 호환 음성 읽기 방식을 사용하세요. 사용할 옵션: customtts 를 로컬/자체 호스팅 엔드포인트에 사용하세요. |
openaiendpoint |
http://localhost:8880/v1/audio/speech |
로컬 서버 URL (필요하면 포트 변경) |
speech |
en-US |
영어 음성 읽기 활성화 |
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 는 음성 읽기를 재생하는 페이지에서 접근할 수 있어야 하며, voiceopenai 는 서버가 지원하는 음성이어야 합니다. Kokoro-FastAPI에서는 다음과 같은 이름을 사용합니다: af_bella를 사용하세요. openedai-speech에서는 다음과 같은 이름을 자주 사용합니다: nova 또는 echo.
로컬 서버를 포함한 모든 음성 읽기 제공업체에서 사용할 수 있습니다:
| 매개변수 | 예시 | 설명 |
|---|---|---|
simpletts |
&simpletts |
'says' 생략 — 메시지만 읽기 |
simpletts2 |
&simpletts2 |
사용자 이름 완전히 생략 |
volume |
&volume=0.8 |
볼륨 수준 (0.0~1.0) |
skipmessages |
&skipmessages=3 |
메시지 3개당 1개만 읽기 |
ttscommand |
&ttscommand=!say |
!say로 시작하는 메시지만 읽기 |
readevents |
&readevents |
구독, 후원 등도 읽기 |
ttsquick |
&ttsquick=100 |
이 문자 수 이후의 음성 내용을 의도적으로 자릅니다. 메시지가 잘린다면 제거하세요. |
SSN은 이미 OS/브라우저의 speechSynthesis, 내장 Kokoro, Piper, Kitten, eSpeak를 이미 지원합니다. 향후 브라우저 기능으로 특히 유용한 것은 다음 기능을 사용할 수 있을 때의 오디오 출력 장치 선택기입니다: setSinkId 를 지원하는 환경, 더 다양한 Piper 음성, 오디오 청크를 스트리밍하는 서버용 전용 점진적 스트리밍 재생 경로입니다.
OBS에서 음성 읽기 오디오를 캡처하는 방법은 Social Stream Ninja의 실행 방식에 따라 다릅니다.
가장 간단한 방법이며 다음에 사용할 수 있습니다: 모든 음성 읽기 제공업체 (내장 및 자체 호스팅 서버).
dock.html 음성 읽기 매개변수가 있는 URLOBS 브라우저 소스가 아닌 Social Stream Ninja 독립 실행형 데스크톱 앱을 사용한다면:
Audio Router 는 특정 앱을 가상 케이블로 라우팅할 수 있지만 오래된 소프트웨어입니다. 작동한다면 Windows 앱별 라우팅을 우선 사용하세요.
Voicemeeter 는 음성 읽기를 로컬에서 듣고 OBS로 라우팅하면서 음악/게임 오디오와 분리해야 할 때 가장 적합합니다.
?speech=en-US 만 있고 제공업체가 없는 경우)는 브라우저가 제공하는 음성에 의존합니다. OBS에서 음성을 제공하지 않거나 음성 목록은 보여도 캡처 가능한 오디오가 나오지 않을 수 있습니다. 음성 재생과 OBS 녹음을 별도로 시험하세요. 위의 제공업체 중 하나를 사용하세요(kokoro, piper등)을 대신 사용하세요.
| 옵션 | 설정 | 품질 | 비공개 | OBS (브라우저 소스) | GPU 필요 | 비용 |
|---|---|---|---|---|---|---|
| 내장 Kokoro | 없음 | ⭐⭐⭐⭐⭐ | 예 | 예 | 아니요 (사용하면 더 빠름) | 무료 |
| 내장 Piper | 없음 | ⭐⭐⭐⭐ | 예 | 예 | 아니요 | 무료 |
| 내장 Kitten | 없음 | ⭐⭐⭐ | 예 | 예 | 아니요 | 무료 |
| 내장 eSpeak | 없음 | ⭐⭐ | 예 | 예 | 아니요 | 무료 |
| Kokoro-FastAPI | Docker | ⭐⭐⭐⭐⭐ | 예 | 예 | 아니요 (선택 사항) | 무료 |
| openedai-speech | Docker | ⭐⭐⭐⭐ | 예 | 예 | 아니요 | 무료 |
| ElevenLabs | API 키 | ⭐⭐⭐⭐⭐ | 아니요 | 예 | 아니요 | 유료 요금제 |
| 시스템 음성 읽기 | 없음 | ⭐⭐ | 예 | 아니요* | 아니요 | 무료 |
* 시스템 음성 읽기를 OBS에서 캡처하려면 가상 오디오 케이블로 라우팅해야 합니다.
앱 테스트는 앱에서 서버에 접근할 수 있다는 것만 확인합니다. OBS 브라우저 소스도 엔드포인트에 접근하고 오디오를 재생할 수 있어야 합니다.
127.0.0.1 을 음성 읽기 서버 컴퓨터의 LAN IP로 바꾸세요.ttsquick을 확인하세요. 이 옵션은 의도적으로 읽는 내용을 짧게 자릅니다.&ttsquick=14 또는 다른 작은 숫자가 있다면 제거하고 OBS 브라우저 소스를 새로고침하세요.typewriter=를 사용한다면 테스트 중에는 잠시 제거하세요. 음성 읽기는 보통 원본 메시지를 사용하지만, 시각 효과를 제거하면 타이밍 문제 여부를 빠르게 확인할 수 있습니다.http://127.0.0.1:8880/web/ 를 Kokoro-FastAPI에 사용하거나 서버에 맞는 포트를 사용하세요.http://SERVER_LAN_IP:8880/web/를 여세요. 로드되지 않으면 OBS도 해당 서버를 사용할 수 없습니다.브라우저에 CORS, 로컬 네트워크 접근, 사설 네트워크 접근 또는 fetch 실패로 요청이 차단되었다고 표시되면 음성 읽기 서버가 요청을 전혀 받지 못했을 수 있습니다.
npm run local-tts-bridge 를 OBS 컴퓨터에서 실행하고 SSN이 다음을 사용하도록 설정하세요: http://127.0.0.1:8124/v1/audio/speech.af_bella, af_sarah, am_adam또는 Kokoro 웹 UI의 다른 음성을 사용하세요.nova, echo, 그리고 alloy 등이 유효할 수 있습니다.?speech=en-US 에서 다음을 제외한 경우 &ttsprovider=). 시스템 음성 읽기는 데스크톱 오디오나 가상 케이블 캡처가 필요할 수 있습니다.Docker 이미지 태그는 바뀔 수 있습니다. 이 가이드의 명령이 더 이상 작동하지 않으면 프로젝트 페이지에서 최신 태그를 확인하세요: