support for rime arcana model
This commit is contained in:
committed by
Mark Backman
parent
a995cf81b6
commit
b25f3b2ed2
@@ -44,7 +44,8 @@ async def run_bot(webrtc_connection: SmallWebRTCConnection, _: argparse.Namespac
|
|||||||
|
|
||||||
tts = RimeHttpTTSService(
|
tts = RimeHttpTTSService(
|
||||||
api_key=os.getenv("RIME_API_KEY", ""),
|
api_key=os.getenv("RIME_API_KEY", ""),
|
||||||
voice_id="rex",
|
voice_id="luna",
|
||||||
|
model="arcana",
|
||||||
aiohttp_session=session,
|
aiohttp_session=session,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -400,6 +400,13 @@ class RimeHttpTTSService(TTSService):
|
|||||||
payload["modelId"] = self._model_name
|
payload["modelId"] = self._model_name
|
||||||
payload["samplingRate"] = self.sample_rate
|
payload["samplingRate"] = self.sample_rate
|
||||||
|
|
||||||
|
# Arcana does not support PCM audio
|
||||||
|
if payload["modelId"] == "arcana":
|
||||||
|
headers["Accept"] = "audio/wav"
|
||||||
|
need_to_strip_wav_header = True
|
||||||
|
else:
|
||||||
|
need_to_strip_wav_header = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await self.start_ttfb_metrics()
|
await self.start_ttfb_metrics()
|
||||||
|
|
||||||
@@ -420,6 +427,10 @@ class RimeHttpTTSService(TTSService):
|
|||||||
CHUNK_SIZE = 1024
|
CHUNK_SIZE = 1024
|
||||||
|
|
||||||
async for chunk in response.content.iter_chunked(CHUNK_SIZE):
|
async for chunk in response.content.iter_chunked(CHUNK_SIZE):
|
||||||
|
if need_to_strip_wav_header and chunk.startswith(b"RIFF"):
|
||||||
|
chunk = chunk[44:]
|
||||||
|
need_to_strip_wav_header = False
|
||||||
|
|
||||||
if len(chunk) > 0:
|
if len(chunk) > 0:
|
||||||
await self.stop_ttfb_metrics()
|
await self.stop_ttfb_metrics()
|
||||||
frame = TTSAudioRawFrame(chunk, self.sample_rate, 1)
|
frame = TTSAudioRawFrame(chunk, self.sample_rate, 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user