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