Tous les produits
Search
Centre de documentation

Intelligent Media Services:Accéder aux modèles TTS

Dernière mise à jour :Aug 11, 2026

Intégrez un modèle TTS développé en interne dans un workflow en temps réel en déployant un endpoint de streaming HTTPS acceptant du texte et renvoyant de l'audio.

Fonctionnement

  1. Configurez le nœud TTS dans la console avec votre URL HTTPS, votre token et votre taux d'échantillonnage.

  2. Démarrez le workflow en temps réel. Pour chaque requête TTS, le workflow envoie une requête POST contenant le texte, la voix, le taux d'échantillonnage et les métadonnées de session à votre endpoint.

  3. Votre serveur TTS génère l'audio et le renvoie sous forme de flux via une réponse HTTP.

  4. Le workflow transmet les segments audio aux nœuds suivants en temps réel.

Prérequis

Avant de commencer :

  • Votre modèle TTS est accessible sur Internet via HTTPS.

  • Votre serveur HTTP prend en charge les réponses en streaming.

  • Un modèle de workflow comportant un nœud TTS a été créé.

Configurer le nœud TTS

Définissez les paramètres suivants dans le nœud TTS :

Paramètre Type Obligatoire Description Exemple
Request URL String Oui URL HTTPS de l'endpoint de votre modèle TTS. https://www.abc.com
Token String Non Token d'autorisation envoyé avec chaque requête. AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI
Sample rate Integer Oui Taux d'échantillonnage audio en Hz. Valeurs valides : 8000, 16000, 24000, 48000. 48000
Remarque

Seul l'audio mono S16LE (Signed 16-bit Little-Endian) est pris en charge. Si votre modèle utilise un autre format, rééchantillonnez sa sortie au format S16LE.

Paramètres de la requête

Lors de l'exécution, le workflow envoie une requête POST à votre endpoint avec le corps JSON suivant :

Paramètre Type Obligatoire Description Exemple
Text String Oui Texte à synthétiser en parole. Hello
VoiceId String Non Identifiant de voix pour le modèle TTS. <your-voice-id>
SampleRate Integer Oui Taux d'échantillonnage en Hz. Correspond à la valeur configurée dans la console. 48000
Token String Non Token d'autorisation. Correspond à la valeur configurée dans la console. AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI
ExtendData String Oui Chaîne JSON contenant des métadonnées de session et des données métier personnalisées. Champs ExtendData. Voir ci-dessous

Champs ExtendData

ExtendData contient les champs suivants :

Champ Type Obligatoire Description Exemple
InstanceId String Oui ID de l'instance d'agent intelligent. 68e00b6640e*****3e943332fee7
ChannelId String Oui ID du canal de communication. 123
SentenceId Int Oui ID de session Q&R. Toutes les réponses à une même requête utilisateur partagent le même SentenceId. 3
Emotion String Non Émotion appliquée à la synthèse vocale. Valeurs valides : neutral, happy, sad. Aucune émotion n'est appliquée si ce champ est omis. happy
UserData String Non Données métier personnalisées transmises au démarrage de l'instance d'agent intelligent. {"aaaa":"bbbb"}

**Exemple de valeur ExtendData :**

{
  "InstanceId": "68e00b6640e*****3e943332fee7",
  "ChannelId": "123",
  "SentenceId": "3",
  "Emotion": "happy",
  "UserData": "{\"aaaa\":\"bbbb\"}"
}

Exigences relatives à la réponse

Votre serveur TTS doit renvoyer de l'audio correspondant au ton et au taux d'échantillonnage demandés sous forme de réponse HTTP en streaming. Une latence de streaming réduite améliore directement les performances de bout en bout.

Exemple de serveur TTS

Python

Utilise aiohttp pour implémenter un serveur TTS en streaming sur l'endpoint /stream-audio.

from aiohttp import web

async def stream_audio(request):
    data = await request.json()
    text = data.get('Text', "")
    token = data.get('Token', None)
    sample_rate = data.get('SampleRate', 48000)
    extend_data = data.get('ExtendData', "")
    print(f"text:{text}, token:{token}, sample_rate:{sample_rate}, extend_data:{extend_data}")
    # Validate the token here.

    response = web.StreamResponse(
        status=200,
        reason='OK',
        headers={'Content-Type': 'audio/mpeg'}
    )

    # Start the streaming response.
    await response.prepare(request)

    # generate_tts_data is a coroutine that yields audio chunks.
    async for chunk in generate_tts_data(text, sample_rate):
        await response.write(chunk)

    # Signal the end of the response.
    await response.write_eof()

    return response

async def generate_tts_data(text: str, sample_rate: int):
    # Replace this with your TTS model inference logic.
    # This example reads audio data from a local PCM file.
    file_path = '/your_dir/sample.pcm'
    with open(file_path, 'rb') as f:
        while True:
            chunk = f.read(4096)  # Read 4 KB per chunk.
            if not chunk:
                break
            yield chunk

app = web.Application()
app.add_routes([web.post('/stream-audio', stream_audio)])

if __name__ == '__main__':
    web.run_app(app)

En production, remplacez generate_tts_data par la logique d'inférence de votre modèle et mettez à jour /your_dir/sample.pcm avec le chemin réel de votre fichier audio.

Références