全部产品
Search
文档中心

Intelligent Media Services:Antarmuka standar TTS

更新时间:Nov 11, 2025

Alur kerja real-time memungkinkan Anda mengakses model teks-ke-ucapan (TTS) melalui protokol standar.

Antarmuka standar untuk model TTS yang dikembangkan sendiri

Untuk menambahkan model teks-ke-ucapan (TTS) buatan Anda ke dalam alur kerja, Anda harus mengimplementasikan layanan streaming HTTP yang dapat diakses melalui Internet. Layanan tersebut harus mengenkapsulasi model TTS Anda sesuai dengan spesifikasi masukan dan keluaran yang telah ditentukan.

  1. Di Konsol orkestrasi, konfigurasikan parameter berikut untuk node Text-to-Speech (TTS):

Nama

Tipe

Diperlukan

Deskripsi

Contoh

URL Permintaan

String

Ya

Titik akhir HTTPS dari model yang dikembangkan sendiri.

https://www.abc.com

Token

String

Tidak

Token otorisasi untuk layanan.

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

Laju sampel

Integer

Ya

Laju sampel dalam Hz. Nilai yang valid:

  • 8000

  • 16000

  • 24000

  • 48000

48000

Catatan

Antarmuka hanya mendukung data audio mono dalam format S16LE. Ubah sampel data Anda ke format yang didukung sebelum mengirimkannya.

  1. Saat alur kerja real-time dijalankan, layanan menyusun data formulir menjadi permintaan POST yang dikirim ke titik akhir HTTPS dari model TTS buatan Anda yang telah dikonfigurasi. Tabel berikut menjelaskan parameter permintaan tersebut.

Nama

Tipe

Wajib

Deskripsi

Contoh

Teks

String

Ya

Teks untuk sintesis suara.

Halo

VoiceId

String

Tidak

Suara.

yourVoiceId

SampleRate

Integer

Ya

Laju sampel dalam Hz.

48000

Token

String

Tidak

Token otorisasi untuk layanan.

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

ExtendData

String

Ya

Data ekstensi TTS kustom. Ini mencakup ID instans dan data bisnis yang ditentukan pengguna saat memulai instans.

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

  • InstanceId

String

Ya

ID instans.

68e00b6640e*****3e943332fee7

  • ChannelId

String

Ya

ID saluran.

123

  • SentenceId

Int

Ya

ID pasangan tanya-jawab.

Catatan

Untuk satu pertanyaan pengguna, Agen menggunakan ID yang sama untuk tanggapannya.

3

  • Emotion

String

Tidak

Emosi ucapan. Nilai yang valid:

  • neutral

  • happy

  • sad

Catatan

Jika Anda tidak memberikan parameter ini, ucapan yang disintesis tidak memiliki atribut emosional.

happy

  • UserData

String

Tidak

Data bisnis kustom yang diteruskan saat instans diluncurkan.

{"aaaa":"bbbb"}

Catatan

Kirimkan aliran audio PCM yang dihasilkan dengan suara dan laju sampel yang sesuai ke layanan secara bertahap melalui tanggapan streaming HTTP. Layanan kemudian akan mendorong data audio tersebut ke node berikutnya secara real time.

Server TTS Kustom

Python

Contoh kode berikut menunjukkan cara menyesuaikan server TTS:

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}")
    # TODO: Periksa apakah token valid.

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

    # Mulai tanggapan.
    await response.prepare(request)

    # generate_tts_data adalah Korutin yang menghasilkan data audio.
    async for chunk in generate_tts_data(text, sample_rate):
        await response.write(chunk)

    # Selesaikan tanggapan.
    await response.write_eof()

    return response


async def generate_tts_data(text: str, sample_rate: int):
    # TODO: Panggil layanan TTS untuk menghasilkan data audio dengan laju sampel yang sesuai.
    # Contoh: Baca data audio dari file.
    file_path = '/your_dir/sample.pcm'
    with open(file_path, 'rb') as f:
        while True:
            chunk = f.read(4096)  # Baca data sebesar 4 KB setiap kali.
            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)

Referensi

Buat templat alur kerja real-time di Konsol