Align use of language param across TTS services

This commit is contained in:
Mark Backman
2024-09-27 11:22:03 -04:00
parent 44a349386c
commit 7fe118ce63
2 changed files with 15 additions and 12 deletions

View File

@@ -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,

View File

@@ -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)