|
from fastapi import FastAPI, WebSocket, WebSocketDisconnect |
|
import outetts |
|
import io |
|
|
|
|
|
interface = outetts.Interface( |
|
config=outetts.ModelConfig.auto_config( |
|
model=outetts.Models.VERSION_1_0_SIZE_1B, |
|
backend=outetts.Backend.LLAMACPP, |
|
quantization=outetts.LlamaCppQuantization.FP16 |
|
) |
|
) |
|
|
|
|
|
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL") |
|
|
|
app = FastAPI() |
|
|
|
@app.get("/") |
|
def greet_json(): |
|
return {"Hello": "World!"} |
|
|
|
@app.websocket("/ws/tts") |
|
async def websocket_tts(websocket: WebSocket): |
|
await websocket.accept() |
|
try: |
|
while True: |
|
|
|
data = await websocket.receive_text() |
|
|
|
output = interface.generate( |
|
config=outetts.GenerationConfig( |
|
text=data, |
|
generation_type=outetts.GenerationType.CHUNKED, |
|
speaker=speaker, |
|
sampler_config=outetts.SamplerConfig( |
|
temperature=0.4 |
|
), |
|
) |
|
) |
|
|
|
audio_buffer = io.BytesIO() |
|
output.save(audio_buffer) |
|
audio_bytes = audio_buffer.getvalue() |
|
|
|
await websocket.send_bytes(audio_bytes) |
|
except WebSocketDisconnect: |
|
pass |
|
|