test / client.py
Ronaldo
first commit
3e08670
"""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)