Spaces:
Paused
Paused
0x07CB
commited on
refactor: Amélioration de la robustesse de la conversion texte-parole avec gestion des erreurs détaillée
Browse files- core/text_to_speech.py +32 -7
core/text_to_speech.py
CHANGED
|
@@ -116,22 +116,47 @@ class openai_tts(object):
|
|
| 116 |
|
| 117 |
|
| 118 |
def process_tts_message(text_response: str) -> Tuple[Optional[bytes], Optional[float]]:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
try:
|
| 120 |
-
|
| 121 |
tts_voice=st.session_state.tts_voice,
|
| 122 |
tts_model="tts-1",
|
| 123 |
response_format="mp3",
|
| 124 |
speed=1.0
|
| 125 |
-
|
| 126 |
-
|
| 127 |
return tts_output_["data_bytes"], tts_output_["audio_duration"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
except Exception as e:
|
|
|
|
| 129 |
st.error(f"Une erreur s'est produite lors de la conversion texte-parole : {e}")
|
| 130 |
return None, None
|
| 131 |
-
|
| 132 |
-
|
| 133 |
if __name__ == "__main__":
|
| 134 |
|
| 135 |
openai_tts().text_to_speech("Hello, I am an AI assistant. How can I help you?")
|
| 136 |
-
|
| 137 |
-
"""
|
|
|
|
| 116 |
|
| 117 |
|
| 118 |
def process_tts_message(text_response: str) -> Tuple[Optional[bytes], Optional[float]]:
|
| 119 |
+
"""
|
| 120 |
+
Convertit un texte en parole en utilisant l'API OpenAI TTS.
|
| 121 |
+
|
| 122 |
+
Args:
|
| 123 |
+
text_response (str): Le texte à convertir en parole.
|
| 124 |
+
|
| 125 |
+
Returns:
|
| 126 |
+
Tuple[Optional[bytes], Optional[float]]: Un tuple contenant les données audio encodées en base64
|
| 127 |
+
et la durée de l'audio, ou (None, None) en cas d'erreur.
|
| 128 |
+
"""
|
| 129 |
+
if not text_response or not isinstance(text_response, str):
|
| 130 |
+
st.error("Erreur : Le texte à convertir est invalide ou vide")
|
| 131 |
+
return None, None
|
| 132 |
+
|
| 133 |
try:
|
| 134 |
+
tts = openai_tts(
|
| 135 |
tts_voice=st.session_state.tts_voice,
|
| 136 |
tts_model="tts-1",
|
| 137 |
response_format="mp3",
|
| 138 |
speed=1.0
|
| 139 |
+
)
|
| 140 |
+
tts_output_ = tts.text_to_speech(text_response)
|
| 141 |
return tts_output_["data_bytes"], tts_output_["audio_duration"]
|
| 142 |
+
|
| 143 |
+
except ValueError as ve:
|
| 144 |
+
# Erreurs de validation (voix invalide, format non supporté, etc.)
|
| 145 |
+
st.error(f"Erreur de configuration TTS : {ve}")
|
| 146 |
+
return None, None
|
| 147 |
+
|
| 148 |
+
except (KeyError, AttributeError) as ke:
|
| 149 |
+
# Erreurs liées aux variables de session manquantes
|
| 150 |
+
st.error("Erreur : Configuration TTS incomplète ou invalide")
|
| 151 |
+
return None, None
|
| 152 |
+
|
| 153 |
except Exception as e:
|
| 154 |
+
# Autres erreurs (réseau, API, etc.)
|
| 155 |
st.error(f"Une erreur s'est produite lors de la conversion texte-parole : {e}")
|
| 156 |
return None, None
|
| 157 |
+
|
| 158 |
+
|
| 159 |
if __name__ == "__main__":
|
| 160 |
|
| 161 |
openai_tts().text_to_speech("Hello, I am an AI assistant. How can I help you?")
|
| 162 |
+
|
|
|