Update TextGen/router.py
Browse files- 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):
|