View a markdown version of this page

Mengirim teks dan menerima audio - Amazon Polly

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengirim teks dan menerima audio

Sesi streaming dua arah melibatkan membuka koneksi, mengirim teks dan menerima audio secara bersamaan, kemudian menutup aliran saat input selesai. Bagian berikut menjelaskan setiap fase secara rinci.

Buka aliran

Aplikasi Anda memanggil StartSpeechSynthesisStreamoperasi melalui SDK, menentukan parameter sintesis (Engine,,VoiceId, dan opsional OutputFormatLanguageCode,,). LexiconNames SampleRate SDK membuat HTTP/2 koneksi dan aliran dua arah siap menerima peristiwa masukan.

Kirim teks

Klien mengirim satu atau lebih TextEventpesan pada aliran input. Setiap acara dapat dikirim segera setelah teks tersedia, tanpa menunggu input lengkap siap. Peristiwa teks tidak perlu diselaraskan dengan batas kalimat atau tanda baca. Amazon Polly menyusun kembali teks secara internal dan menghasilkan ucapan yang terdengar alami terlepas dari bagaimana masukan dibagi di seluruh peristiwa.

catatan

Saat menggunakan SSML, setiap dokumen SSML harus mandiri dalam satu dokumen. TextEvent Anda tidak dapat membagi tag SSML di beberapa peristiwa. Namun, Anda dapat mencampur peristiwa teks biasa dan peristiwa SSML dalam aliran yang sama.

Aliran tunduk pada batas waktu berikut:

  • Durasi streaming maksimum: 10 menit. Amazon Polly menutup aliran setelah 10 menit terlepas dari aktivitasnya. Jika konten Anda membutuhkan lebih banyak waktu, buka aliran baru untuk teks yang tersisa.

  • Batas waktu idle antara peristiwa berturut-turut: 5 detik. Jika tidak ada peristiwa input yang dikirim selama 5 detik, Amazon Polly menutup aliran. Jika sumber teks Anda memiliki jeda lebih dari 5 detik, kirim keep-alive TextEvent dengan string kosong atau spasi putih untuk mencegah batas waktu.

Memaksa sintesis teks buffer dengan pembilasan

Secara default, Amazon Polly memutuskan kapan harus mensintesis teks buffer berdasarkan batas bahasa alami. Ini menghasilkan kualitas audio terbaik tetapi berarti audio mungkin tidak dikembalikan segera setelah Anda mengirim fileTextEvent.

Pembilasan memberi Anda kendali atas kapan sintesis terjadi. Saat Anda menyiram, Amazon Polly segera mensintesis semua teks yang telah disangga sejauh ini, terlepas dari apakah teks berakhir pada batas alami. Ini berguna ketika sumber teks Anda berhenti di antara bagian logis dan Anda ingin mengirimkan audio untuk apa yang telah dikirim sejauh ini.

Untuk menyiram, atur. FlushStreamConfiguration Forceparameter ke true pada aTextEvent. Anda juga dapat mengirim kosong TextEvent dengan flag flush disetel untuk memicu sintesis tanpa menambahkan konten baru.

Flushing adalah tradeoff. Pengaturan Force ke true tengah kalimat dapat mempengaruhi pengucapan dan intonasi karena synthesizer tidak memiliki konteks tentang apa yang berikut. Untuk hasil terbaik, izinkan Amazon Polly untuk menyangga batas alami bila memungkinkan dan hanya memaksa sintesis ketika persyaratan latensi menuntutnya.

Menerima audio

Saat Amazon Polly mensintesis teks, ia mengembalikan AudioEventpesan pada aliran output. Setiap acara berisi sepotong data audio. Aplikasi Anda harus mengumpulkan potongan-potongan ini (misalnya, dengan menuliskannya secara berurutan ke file atau buffer audio) untuk menghasilkan output audio yang lengkap. Acara audio dapat tiba saat Anda masih mengirim acara teks.

Tutup aliran

Ketika semua teks input telah dikirim, klien mengirimkan file CloseStreamEvent. Amazon Polly selesai memproses teks buffer yang tersisa, mengirimkan peristiwa audio akhir, dan mengembalikan file StreamClosedEventyang berisi jumlah total karakter yang disintesis. Selalu kirim a CloseStreamEvent daripada mengandalkan pembilasan untuk mengakhiri aliran. Penutupan memastikan bahwa semua teks buffer disintesis dan dikembalikan.

Untuk detail selengkapnya tentang parameter permintaan, jenis peristiwa, dan kesalahan, lihat referensi StartSpeechSynthesisStream API.