Jofthomas HF staff commited on
Commit
9905d81
1 Parent(s): f0b6918

Update TextGen/router.py

Browse files
Files changed (1) hide show
  1. TextGen/router.py +27 -0
TextGen/router.py CHANGED
@@ -8,6 +8,7 @@ from fastapi.middleware.cors import CORSMiddleware
8
  from langchain.chains import LLMChain
9
  from langchain.prompts import PromptTemplate
10
  from TextGen.suno import custom_generate_audio, get_audio_information
 
11
  from langchain_google_genai import (
12
  ChatGoogleGenerativeAI,
13
  HarmBlockThreshold,
@@ -156,7 +157,33 @@ async def generate_wav(message: VoiceMessage):
156
 
157
  except Exception as e:
158
  raise HTTPException(status_code=500, detail=str(e))
 
 
 
 
 
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
  @app.get("/generate_song")
162
  async def generate_song(text: str):
 
8
  from langchain.chains import LLMChain
9
  from langchain.prompts import PromptTemplate
10
  from TextGen.suno import custom_generate_audio, get_audio_information
11
+ from TextGen.coqui import predict
12
  from langchain_google_genai import (
13
  ChatGoogleGenerativeAI,
14
  HarmBlockThreshold,
 
157
 
158
  except Exception as e:
159
  raise HTTPException(status_code=500, detail=str(e))
160
+ @app.post("/generate_voice")
161
+ async def generate_voice(message: VoiceMessage):
162
+ try:
163
+ voice = determine_vocie_from_npc(message.npc, message.genre)
164
+ audio_file_pth = handle_file(voice)
165
 
166
+ # Generator function to yield audio chunks
167
+ async def audio_stream():
168
+ result = predict(
169
+ prompt=message.input,
170
+ language=message.language,
171
+ audio_file_pth=audio_file_pth,
172
+ mic_file_path=None,
173
+ use_mic=False,
174
+ voice_cleanup=False,
175
+ no_lang_auto_detect=False,
176
+ agree=True,
177
+ )
178
+ for sampling_rate, audio_chunk in result:
179
+ yield audio_chunk.tobytes()
180
+ await asyncio.sleep(0) # Yield control to the event loop
181
+
182
+ # Return the generated audio as a streaming response
183
+ return StreamingResponse(audio_stream(), media_type="audio/wav")
184
+
185
+ except Exception as e:
186
+ raise HTTPException(status_code=500, detail=str(e))
187
 
188
  @app.get("/generate_song")
189
  async def generate_song(text: str):