feat(ai): Add support for OpenAI TTS speed configuration, defaulting to 1.1x
This commit is contained in:
@@ -44,6 +44,15 @@ def _openai_tts_voice() -> str:
|
|||||||
return os.getenv("AI_VOICE_TTS_VOICE", "alloy").strip() or "alloy"
|
return os.getenv("AI_VOICE_TTS_VOICE", "alloy").strip() or "alloy"
|
||||||
|
|
||||||
|
|
||||||
|
def _openai_tts_speed() -> float:
|
||||||
|
raw = os.getenv("AI_VOICE_TTS_OPENAI_SPEED", "1.1").strip()
|
||||||
|
try:
|
||||||
|
value = float(raw)
|
||||||
|
except ValueError:
|
||||||
|
value = 1.1
|
||||||
|
return max(0.25, min(value, 4.0))
|
||||||
|
|
||||||
|
|
||||||
def _yandex_api_base() -> str:
|
def _yandex_api_base() -> str:
|
||||||
return (
|
return (
|
||||||
os.getenv("AI_VOICE_TTS_YANDEX_API_BASE", "https://tts.api.ml.yandexcloud.kz").strip()
|
os.getenv("AI_VOICE_TTS_YANDEX_API_BASE", "https://tts.api.ml.yandexcloud.kz").strip()
|
||||||
@@ -155,6 +164,7 @@ class OpenAITTSProvider(TTSProvider):
|
|||||||
self._timeout_seconds = _timeout_seconds()
|
self._timeout_seconds = _timeout_seconds()
|
||||||
self._model = _openai_tts_model()
|
self._model = _openai_tts_model()
|
||||||
self._voice = _openai_tts_voice()
|
self._voice = _openai_tts_voice()
|
||||||
|
self._speed = _openai_tts_speed()
|
||||||
self._cache_enabled = _tts_cache_enabled()
|
self._cache_enabled = _tts_cache_enabled()
|
||||||
self._cache_dir = _tts_cache_dir()
|
self._cache_dir = _tts_cache_dir()
|
||||||
self._cache_lock = Lock()
|
self._cache_lock = Lock()
|
||||||
@@ -164,6 +174,7 @@ class OpenAITTSProvider(TTSProvider):
|
|||||||
"provider": self.name,
|
"provider": self.name,
|
||||||
"model": self._model,
|
"model": self._model,
|
||||||
"voice": self._voice,
|
"voice": self._voice,
|
||||||
|
"speed": self._speed,
|
||||||
"language": str(language or "").strip() or None,
|
"language": str(language or "").strip() or None,
|
||||||
"text": text,
|
"text": text,
|
||||||
}
|
}
|
||||||
@@ -202,6 +213,7 @@ class OpenAITTSProvider(TTSProvider):
|
|||||||
"provider": self.name,
|
"provider": self.name,
|
||||||
"model": self._model,
|
"model": self._model,
|
||||||
"voice": self._voice,
|
"voice": self._voice,
|
||||||
|
"speed": self._speed,
|
||||||
"language": str(language or "").strip() or None,
|
"language": str(language or "").strip() or None,
|
||||||
"sample_rate_hz": synthesis.sample_rate_hz,
|
"sample_rate_hz": synthesis.sample_rate_hz,
|
||||||
"text": synthesis.text,
|
"text": synthesis.text,
|
||||||
@@ -247,6 +259,7 @@ class OpenAITTSProvider(TTSProvider):
|
|||||||
json={
|
json={
|
||||||
"model": self._model,
|
"model": self._model,
|
||||||
"voice": self._voice,
|
"voice": self._voice,
|
||||||
|
"speed": self._speed,
|
||||||
"input": text,
|
"input": text,
|
||||||
"response_format": "pcm",
|
"response_format": "pcm",
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user