Spaces:
Sleeping
Sleeping
File size: 2,980 Bytes
3e08670 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | """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)
|