Merge pull request #2296 from pipecat-ai/mb/switch-rime-voices
Added the ability to switch voices to RimeTTSService
This commit is contained in:
@@ -13,7 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
A video service that handles audio streaming and requests HeyGen to generate
|
||||
avatar video responses. (see https://www.heygen.com/)
|
||||
|
||||
- Added the ability to switch voices to `RimeTTSService`.
|
||||
|
||||
- Added Async.ai TTS integration (https://async.ai/)
|
||||
|
||||
- `AsyncAITTSService` – WebSocket-based streaming TTS with interruption support
|
||||
- `AsyncAIHttpTTSService` – HTTP-based streaming TTS service
|
||||
- Example scripts:
|
||||
|
||||
@@ -13,7 +13,7 @@ using Rime's API for streaming and batch audio synthesis.
|
||||
import base64
|
||||
import json
|
||||
import uuid
|
||||
from typing import AsyncGenerator, Optional
|
||||
from typing import Any, AsyncGenerator, Mapping, Optional
|
||||
|
||||
import aiohttp
|
||||
from loguru import logger
|
||||
@@ -181,6 +181,16 @@ class RimeTTSService(AudioContextWordTTSService):
|
||||
self._model = model
|
||||
await super().set_model(model)
|
||||
|
||||
async def _update_settings(self, settings: Mapping[str, Any]):
|
||||
"""Update service settings and reconnect if voice changed."""
|
||||
prev_voice = self._voice_id
|
||||
await super()._update_settings(settings)
|
||||
if not prev_voice == self._voice_id:
|
||||
self._settings["speaker"] = self._voice_id
|
||||
logger.info(f"Switching TTS voice to: [{self._voice_id}]")
|
||||
await self._disconnect()
|
||||
await self._connect()
|
||||
|
||||
def _build_msg(self, text: str = "") -> dict:
|
||||
"""Build JSON message for Rime API."""
|
||||
return {"text": text, "contextId": self._context_id}
|
||||
|
||||
Reference in New Issue
Block a user