Spaces:
Running
Running
| """Client pour tester l'API MMS ASR/TTS""" | |
| import requests | |
| import io | |
| import json | |
| from pathlib import Path | |
| class MMSClient: | |
| def __init__(self, base_url="http://localhost:7860"): | |
| self.base_url = base_url | |
| def health(self): | |
| """Vérifie l'état du service""" | |
| response = requests.get(f"{self.base_url}/health") | |
| return response.json() | |
| def get_supported_languages(self): | |
| """Récupère les langues supportées""" | |
| response = requests.get(f"{self.base_url}/supported-languages") | |
| return response.json() | |
| def asr(self, audio_path, language="eng"): | |
| """ | |
| Convertit l'audio en texte | |
| Args: | |
| audio_path: chemin vers le fichier audio | |
| language: code de langue ISO 639-3 | |
| """ | |
| with open(audio_path, "rb") as f: | |
| files = {"audio": f} | |
| data = {"language": language} | |
| response = requests.post( | |
| f"{self.base_url}/asr", | |
| files=files, | |
| data=data | |
| ) | |
| return response.json() | |
| def tts(self, text, language="eng"): | |
| """ | |
| Convertit le texte en audio | |
| Args: | |
| text: texte à convertir | |
| language: code de langue (beh, bba, ddn, ewe, gej, tbz, yor, eng) | |
| Returns: | |
| bytes: données audio WAV | |
| """ | |
| payload = { | |
| "text": text, | |
| "language": language | |
| } | |
| response = requests.post( | |
| f"{self.base_url}/tts", | |
| json=payload | |
| ) | |
| if response.status_code == 200: | |
| data = response.json() | |
| # Convertit le hex en bytes | |
| audio_bytes = bytes.fromhex(data["audio"]) | |
| return audio_bytes, data | |
| else: | |
| return None, response.json() | |
| def save_audio(self, audio_bytes, output_path): | |
| """Sauvegarde l'audio dans un fichier""" | |
| with open(output_path, "wb") as f: | |
| f.write(audio_bytes) | |
| print(f"Audio sauvegardé: {output_path}") | |
| if __name__ == "__main__": | |
| client = MMSClient() | |
| # Test 1: Vérifier l'état du service | |
| print("=== Test 1: Santé ===") | |
| print(client.health()) | |
| # Test 2: Langues supportées | |
| print("\n=== Test 2: Langues supportées ===") | |
| print(json.dumps(client.get_supported_languages(), indent=2, ensure_ascii=False)) | |
| # Test 3: TTS - Yoruba | |
| print("\n=== Test 3: TTS - Yoruba ===") | |
| audio, data = client.tts("Àbọ̀ wa", language="yor") | |
| if audio: | |
| client.save_audio(audio, "output_yoruba.wav") | |
| print(f"Audio généré: {len(audio)} bytes") | |
| else: | |
| print("Erreur:", data) | |
| # Test 4: TTS - English | |
| print("\n=== Test 4: TTS - English ===") | |
| audio, data = client.tts("Hello world", language="eng") | |
| if audio: | |
| client.save_audio(audio, "output_english.wav") | |
| print(f"Audio généré: {len(audio)} bytes") | |
| else: | |
| print("Erreur:", data) | |