Align use of language param across TTS services
This commit is contained in:
@@ -41,7 +41,10 @@ try:
|
|||||||
SpeechRecognizer,
|
SpeechRecognizer,
|
||||||
SpeechSynthesizer,
|
SpeechSynthesizer,
|
||||||
)
|
)
|
||||||
from azure.cognitiveservices.speech.audio import AudioStreamFormat, PushAudioInputStream
|
from azure.cognitiveservices.speech.audio import (
|
||||||
|
AudioStreamFormat,
|
||||||
|
PushAudioInputStream,
|
||||||
|
)
|
||||||
from azure.cognitiveservices.speech.dialog import AudioConfig
|
from azure.cognitiveservices.speech.dialog import AudioConfig
|
||||||
from openai import AsyncAzureOpenAI
|
from openai import AsyncAzureOpenAI
|
||||||
except ModuleNotFoundError as e:
|
except ModuleNotFoundError as e:
|
||||||
@@ -73,7 +76,7 @@ class AzureLLMService(BaseOpenAILLMService):
|
|||||||
class AzureTTSService(TTSService):
|
class AzureTTSService(TTSService):
|
||||||
class InputParams(BaseModel):
|
class InputParams(BaseModel):
|
||||||
emphasis: Optional[str] = None
|
emphasis: Optional[str] = None
|
||||||
language_code: Optional[str] = "en-US"
|
language: Optional[str] = "en-US"
|
||||||
pitch: Optional[str] = None
|
pitch: Optional[str] = None
|
||||||
rate: Optional[str] = "1.05"
|
rate: Optional[str] = "1.05"
|
||||||
role: Optional[str] = None
|
role: Optional[str] = None
|
||||||
@@ -105,7 +108,7 @@ class AzureTTSService(TTSService):
|
|||||||
|
|
||||||
def _construct_ssml(self, text: str) -> str:
|
def _construct_ssml(self, text: str) -> str:
|
||||||
ssml = (
|
ssml = (
|
||||||
f"<speak version='1.0' xml:lang='{self._params.language_code}' "
|
f"<speak version='1.0' xml:lang='{self._params.language}' "
|
||||||
"xmlns='http://www.w3.org/2001/10/synthesis' "
|
"xmlns='http://www.w3.org/2001/10/synthesis' "
|
||||||
"xmlns:mstts='http://www.w3.org/2001/mstts'>"
|
"xmlns:mstts='http://www.w3.org/2001/mstts'>"
|
||||||
f"<voice name='{self._voice}'>"
|
f"<voice name='{self._voice}'>"
|
||||||
@@ -155,9 +158,9 @@ class AzureTTSService(TTSService):
|
|||||||
logger.debug(f"Setting TTS emphasis to: [{emphasis}]")
|
logger.debug(f"Setting TTS emphasis to: [{emphasis}]")
|
||||||
self._params.emphasis = emphasis
|
self._params.emphasis = emphasis
|
||||||
|
|
||||||
async def set_language_code(self, language_code: str):
|
async def set_language(self, language: str):
|
||||||
logger.debug(f"Setting TTS language code to: [{language_code}]")
|
logger.debug(f"Setting TTS language code to: [{language}]")
|
||||||
self._params.language_code = language_code
|
self._params.language = language
|
||||||
|
|
||||||
async def set_pitch(self, pitch: str):
|
async def set_pitch(self, pitch: str):
|
||||||
logger.debug(f"Setting TTS pitch to: [{pitch}]")
|
logger.debug(f"Setting TTS pitch to: [{pitch}]")
|
||||||
@@ -187,7 +190,7 @@ class AzureTTSService(TTSService):
|
|||||||
valid_params = {
|
valid_params = {
|
||||||
"voice": self.set_voice,
|
"voice": self.set_voice,
|
||||||
"emphasis": self.set_emphasis,
|
"emphasis": self.set_emphasis,
|
||||||
"language_code": self.set_language_code,
|
"language_code": self.set_language,
|
||||||
"pitch": self.set_pitch,
|
"pitch": self.set_pitch,
|
||||||
"rate": self.set_rate,
|
"rate": self.set_rate,
|
||||||
"role": self.set_role,
|
"role": self.set_role,
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ def calculate_word_times(
|
|||||||
|
|
||||||
class ElevenLabsTTSService(AsyncWordTTSService):
|
class ElevenLabsTTSService(AsyncWordTTSService):
|
||||||
class InputParams(BaseModel):
|
class InputParams(BaseModel):
|
||||||
language_code: Optional[str] = None
|
language: Optional[str] = None
|
||||||
output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000"
|
output_format: Literal["pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100"] = "pcm_16000"
|
||||||
optimize_streaming_latency: Optional[str] = None
|
optimize_streaming_latency: Optional[str] = None
|
||||||
stability: Optional[float] = None
|
stability: Optional[float] = None
|
||||||
@@ -229,13 +229,13 @@ class ElevenLabsTTSService(AsyncWordTTSService):
|
|||||||
if self._params.optimize_streaming_latency:
|
if self._params.optimize_streaming_latency:
|
||||||
url += f"&optimize_streaming_latency={self._params.optimize_streaming_latency}"
|
url += f"&optimize_streaming_latency={self._params.optimize_streaming_latency}"
|
||||||
|
|
||||||
# language_code can only be used with the 'eleven_turbo_v2_5' model
|
# language can only be used with the 'eleven_turbo_v2_5' model
|
||||||
if self._params.language_code:
|
if self._params.language:
|
||||||
if model == "eleven_turbo_v2_5":
|
if model == "eleven_turbo_v2_5":
|
||||||
url += f"&language_code={self._params.language_code}"
|
url += f"&language_code={self._params.language}"
|
||||||
else:
|
else:
|
||||||
logger.debug(
|
logger.debug(
|
||||||
f"Language code [{self._params.language_code}] not applied. Language codes can only be used with the 'eleven_turbo_v2_5' model."
|
f"Language code [{self._params.language}] not applied. Language codes can only be used with the 'eleven_turbo_v2_5' model."
|
||||||
)
|
)
|
||||||
|
|
||||||
self._websocket = await websockets.connect(url)
|
self._websocket = await websockets.connect(url)
|
||||||
|
|||||||
Reference in New Issue
Block a user