Jacky2305 commited on
Commit
d8fe1cd
·
1 Parent(s): e80218c

Fix Piper 1.2+ synthesize API: use wave.open with BytesIO buffer

Browse files
Files changed (1) hide show
  1. main.py +7 -2
main.py CHANGED
@@ -7,6 +7,7 @@ import uuid
7
  from fastapi.responses import Response
8
  from io import BytesIO
9
  import requests
 
10
  from pathlib import Path
11
 
12
  app = FastAPI(title="Piper TTS Space")
@@ -90,9 +91,13 @@ async def tts(request: TTSRequest):
90
  raise HTTPException(400, f"Voice load failed: {str(e)}")
91
 
92
  try:
 
93
  buffer = BytesIO()
94
- # Piper 1.2+ requires wav_file parameter
95
- voice.synthesize(request.text, speaker_id=request.speaker_id, wav_file=buffer)
 
 
 
96
  buffer.seek(0)
97
  return Response(
98
  content=buffer.read(),
 
7
  from fastapi.responses import Response
8
  from io import BytesIO
9
  import requests
10
+ import wave
11
  from pathlib import Path
12
 
13
  app = FastAPI(title="Piper TTS Space")
 
91
  raise HTTPException(400, f"Voice load failed: {str(e)}")
92
 
93
  try:
94
+ # Piper 1.2+ requires wav_file parameter - use wave.open with BytesIO
95
  buffer = BytesIO()
96
+ with wave.open(buffer, 'wb') as wav_file:
97
+ wav_file.setnchannels(1)
98
+ wav_file.setsampwidth(2) # 16-bit
99
+ wav_file.setframerate(request.sample_rate)
100
+ voice.synthesize(request.text, speaker_id=request.speaker_id, wav_file=wav_file)
101
  buffer.seek(0)
102
  return Response(
103
  content=buffer.read(),