Add apply_text_normalization to ElevenLabs TTS services
This commit is contained in:
@@ -12,6 +12,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- `ElevenLabsTTSService` now supports additional runtime changes to the `model`,
|
- `ElevenLabsTTSService` now supports additional runtime changes to the `model`,
|
||||||
`language`, and `voice_settings` parameters.
|
`language`, and `voice_settings` parameters.
|
||||||
|
|
||||||
|
- Added `apply_text_normalization` support to `ElevenLabsTTSService` and
|
||||||
|
`ElevenLabsHttpTTSService`.
|
||||||
|
|
||||||
- Added `MistralLLMService`, using Mistral's chat completion API.
|
- Added `MistralLLMService`, using Mistral's chat completion API.
|
||||||
|
|
||||||
- Added the ability to retry executing a chat completion after a timeout period
|
- Added the ability to retry executing a chat completion after a timeout period
|
||||||
|
|||||||
@@ -245,6 +245,7 @@ class ElevenLabsTTSService(AudioContextWordTTSService):
|
|||||||
auto_mode: Whether to enable automatic mode optimization.
|
auto_mode: Whether to enable automatic mode optimization.
|
||||||
enable_ssml_parsing: Whether to parse SSML tags in text.
|
enable_ssml_parsing: Whether to parse SSML tags in text.
|
||||||
enable_logging: Whether to enable ElevenLabs logging.
|
enable_logging: Whether to enable ElevenLabs logging.
|
||||||
|
apply_text_normalization: Text normalization mode ("auto", "on", "off").
|
||||||
"""
|
"""
|
||||||
|
|
||||||
language: Optional[Language] = None
|
language: Optional[Language] = None
|
||||||
@@ -256,6 +257,7 @@ class ElevenLabsTTSService(AudioContextWordTTSService):
|
|||||||
auto_mode: Optional[bool] = True
|
auto_mode: Optional[bool] = True
|
||||||
enable_ssml_parsing: Optional[bool] = None
|
enable_ssml_parsing: Optional[bool] = None
|
||||||
enable_logging: Optional[bool] = None
|
enable_logging: Optional[bool] = None
|
||||||
|
apply_text_normalization: Optional[Literal["auto", "on", "off"]] = None
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@@ -320,6 +322,7 @@ class ElevenLabsTTSService(AudioContextWordTTSService):
|
|||||||
"auto_mode": str(params.auto_mode).lower(),
|
"auto_mode": str(params.auto_mode).lower(),
|
||||||
"enable_ssml_parsing": params.enable_ssml_parsing,
|
"enable_ssml_parsing": params.enable_ssml_parsing,
|
||||||
"enable_logging": params.enable_logging,
|
"enable_logging": params.enable_logging,
|
||||||
|
"apply_text_normalization": params.apply_text_normalization,
|
||||||
}
|
}
|
||||||
self.set_model_name(model)
|
self.set_model_name(model)
|
||||||
self.set_voice(voice_id)
|
self.set_voice(voice_id)
|
||||||
@@ -501,6 +504,9 @@ class ElevenLabsTTSService(AudioContextWordTTSService):
|
|||||||
if self._settings["enable_logging"]:
|
if self._settings["enable_logging"]:
|
||||||
url += f"&enable_logging={self._settings['enable_logging']}"
|
url += f"&enable_logging={self._settings['enable_logging']}"
|
||||||
|
|
||||||
|
if self._settings["apply_text_normalization"] is not None:
|
||||||
|
url += f"&apply_text_normalization={self._settings['apply_text_normalization']}"
|
||||||
|
|
||||||
# Language can only be used with the ELEVENLABS_MULTILINGUAL_MODELS
|
# Language can only be used with the ELEVENLABS_MULTILINGUAL_MODELS
|
||||||
language = self._settings["language"]
|
language = self._settings["language"]
|
||||||
if model in ELEVENLABS_MULTILINGUAL_MODELS and language is not None:
|
if model in ELEVENLABS_MULTILINGUAL_MODELS and language is not None:
|
||||||
@@ -732,6 +738,7 @@ class ElevenLabsHttpTTSService(WordTTSService):
|
|||||||
style: Style control for voice expression (0.0 to 1.0).
|
style: Style control for voice expression (0.0 to 1.0).
|
||||||
use_speaker_boost: Whether to use speaker boost enhancement.
|
use_speaker_boost: Whether to use speaker boost enhancement.
|
||||||
speed: Voice speed control (0.25 to 4.0).
|
speed: Voice speed control (0.25 to 4.0).
|
||||||
|
apply_text_normalization: Text normalization mode ("auto", "on", "off").
|
||||||
"""
|
"""
|
||||||
|
|
||||||
language: Optional[Language] = None
|
language: Optional[Language] = None
|
||||||
@@ -741,6 +748,7 @@ class ElevenLabsHttpTTSService(WordTTSService):
|
|||||||
style: Optional[float] = None
|
style: Optional[float] = None
|
||||||
use_speaker_boost: Optional[bool] = None
|
use_speaker_boost: Optional[bool] = None
|
||||||
speed: Optional[float] = None
|
speed: Optional[float] = None
|
||||||
|
apply_text_normalization: Optional[Literal["auto", "on", "off"]] = None
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@@ -791,6 +799,7 @@ class ElevenLabsHttpTTSService(WordTTSService):
|
|||||||
"style": params.style,
|
"style": params.style,
|
||||||
"use_speaker_boost": params.use_speaker_boost,
|
"use_speaker_boost": params.use_speaker_boost,
|
||||||
"speed": params.speed,
|
"speed": params.speed,
|
||||||
|
"apply_text_normalization": params.apply_text_normalization,
|
||||||
}
|
}
|
||||||
self.set_model_name(model)
|
self.set_model_name(model)
|
||||||
self.set_voice(voice_id)
|
self.set_voice(voice_id)
|
||||||
@@ -974,6 +983,8 @@ class ElevenLabsHttpTTSService(WordTTSService):
|
|||||||
}
|
}
|
||||||
if self._settings["optimize_streaming_latency"] is not None:
|
if self._settings["optimize_streaming_latency"] is not None:
|
||||||
params["optimize_streaming_latency"] = self._settings["optimize_streaming_latency"]
|
params["optimize_streaming_latency"] = self._settings["optimize_streaming_latency"]
|
||||||
|
if self._settings["apply_text_normalization"] is not None:
|
||||||
|
params["apply_text_normalization"] = self._settings["apply_text_normalization"]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await self.start_ttfb_metrics()
|
await self.start_ttfb_metrics()
|
||||||
|
|||||||
Reference in New Issue
Block a user