Initial commit from agent
This commit is contained in:
27
core/voice_output.py
Normal file
27
core/voice_output.py
Normal file
@@ -0,0 +1,27 @@
|
||||
"""
|
||||
Voice output — converts text to speech using Fish Audio TTS API.
|
||||
"""
|
||||
import os
|
||||
import asyncio
|
||||
from fish_audio_sdk import Session, TTSRequest
|
||||
|
||||
async def speak(text: str) -> bytes:
|
||||
"""
|
||||
Convert text to speech audio bytes using Fish Audio TTS.
|
||||
Returns raw audio bytes (MP3).
|
||||
"""
|
||||
api_key = os.getenv("FISH_AUDIO_API_KEY")
|
||||
voice_id = os.getenv("FISH_AUDIO_VOICE_ID", None)
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
def _tts():
|
||||
with Session(apikey=api_key) as session:
|
||||
audio_chunks = []
|
||||
for chunk in session.tts(TTSRequest(
|
||||
text=text,
|
||||
reference_id=voice_id
|
||||
)):
|
||||
audio_chunks.append(chunk)
|
||||
return b"".join(audio_chunks)
|
||||
|
||||
return await loop.run_in_executor(None, _tts)
|
||||
Reference in New Issue
Block a user