Add languages to RimeHttpTTSService, extend lang support to German and French
This commit is contained in:
@@ -22,6 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
`WebsocketTransport` to connect with Pipecat `FastAPIWebsocketTransport` or
|
`WebsocketTransport` to connect with Pipecat `FastAPIWebsocketTransport` or
|
||||||
`WebsocketServerTransport`.
|
`WebsocketServerTransport`.
|
||||||
|
|
||||||
|
- Added language support to `RimeHttpTTSService`. Extended languages to include
|
||||||
|
German and French for both `RimeTTSService` and `RimeHttpTTSService`.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Upgraded `daily-python` to 0.19.2.
|
- Upgraded `daily-python` to 0.19.2.
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ from pipecat.frames.frames import (
|
|||||||
)
|
)
|
||||||
from pipecat.processors.frame_processor import FrameDirection
|
from pipecat.processors.frame_processor import FrameDirection
|
||||||
from pipecat.services.tts_service import AudioContextWordTTSService, TTSService
|
from pipecat.services.tts_service import AudioContextWordTTSService, TTSService
|
||||||
|
from pipecat.transcriptions import language
|
||||||
from pipecat.transcriptions.language import Language
|
from pipecat.transcriptions.language import Language
|
||||||
from pipecat.utils.text.base_text_aggregator import BaseTextAggregator
|
from pipecat.utils.text.base_text_aggregator import BaseTextAggregator
|
||||||
from pipecat.utils.text.skip_tags_aggregator import SkipTagsAggregator
|
from pipecat.utils.text.skip_tags_aggregator import SkipTagsAggregator
|
||||||
@@ -49,6 +50,8 @@ def language_to_rime_language(language: Language) -> str:
|
|||||||
str: Three-letter language code used by Rime (e.g., 'eng' for English).
|
str: Three-letter language code used by Rime (e.g., 'eng' for English).
|
||||||
"""
|
"""
|
||||||
LANGUAGE_MAP = {
|
LANGUAGE_MAP = {
|
||||||
|
Language.DE: "ger",
|
||||||
|
Language.FR: "fra",
|
||||||
Language.EN: "eng",
|
Language.EN: "eng",
|
||||||
Language.ES: "spa",
|
Language.ES: "spa",
|
||||||
}
|
}
|
||||||
@@ -352,6 +355,7 @@ class RimeTTSService(AudioContextWordTTSService):
|
|||||||
|
|
||||||
class RimeHttpTTSService(TTSService):
|
class RimeHttpTTSService(TTSService):
|
||||||
class InputParams(BaseModel):
|
class InputParams(BaseModel):
|
||||||
|
language: Optional[Language] = Language.EN
|
||||||
pause_between_brackets: Optional[bool] = False
|
pause_between_brackets: Optional[bool] = False
|
||||||
phonemize_between_brackets: Optional[bool] = False
|
phonemize_between_brackets: Optional[bool] = False
|
||||||
inline_speed_alpha: Optional[str] = None
|
inline_speed_alpha: Optional[str] = None
|
||||||
@@ -377,6 +381,9 @@ class RimeHttpTTSService(TTSService):
|
|||||||
self._session = aiohttp_session
|
self._session = aiohttp_session
|
||||||
self._base_url = "https://users.rime.ai/v1/rime-tts"
|
self._base_url = "https://users.rime.ai/v1/rime-tts"
|
||||||
self._settings = {
|
self._settings = {
|
||||||
|
"lang": self.language_to_service_language(params.language)
|
||||||
|
if params.language
|
||||||
|
else "eng",
|
||||||
"speedAlpha": params.speed_alpha,
|
"speedAlpha": params.speed_alpha,
|
||||||
"reduceLatency": params.reduce_latency,
|
"reduceLatency": params.reduce_latency,
|
||||||
"pauseBetweenBrackets": params.pause_between_brackets,
|
"pauseBetweenBrackets": params.pause_between_brackets,
|
||||||
@@ -391,6 +398,10 @@ class RimeHttpTTSService(TTSService):
|
|||||||
def can_generate_metrics(self) -> bool:
|
def can_generate_metrics(self) -> bool:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def language_to_service_language(self, language: Language) -> str | None:
|
||||||
|
"""Convert pipecat language to Rime language code."""
|
||||||
|
return language_to_rime_language(language)
|
||||||
|
|
||||||
@traced_tts
|
@traced_tts
|
||||||
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
||||||
logger.debug(f"{self}: Generating TTS [{text}]")
|
logger.debug(f"{self}: Generating TTS [{text}]")
|
||||||
|
|||||||
Reference in New Issue
Block a user