Membagi string SSML menjadi batchs AWS Polly ánd Teks Google untuk API Pidato dapat dikonsumsi.
hardLimit .. , ; atau ruang. Dapat dikonfigurasi.Berdasarkan Polly-SSML-Split oleh @oleglegun
Instal paket dengan:
npm install ssml-split --save Impor paket dan atur opsi. Gunakan metode .split() untuk membagi string SSML Anda. Anda dapat mengubah softLimit untuk melihat apa yang cocok untuk Anda. Saya sarankan Anda menjaga hardLimit pada batas batasan API masing -masing:
import SSMLSplit from 'ssml-split' ;
const ssmlSplit = new SSMLSplit ( {
// The service you are using: "google" or "aws"
synthesizer : 'google' ,
// Finds a possible split moment starting from 4000 characters
softLimit : 4000 ,
// Google Text to Speech limitation
hardLimit : 5000 ,
// Allow to split large paragraphs, set to false to keep your <p></p> intact
breakParagraphsAboveHardLimit : true
} ) ;
const batches = ssmlSplit . split ( '<speak>your long ssml here</speak>' ) ;| Pilihan | Jenis | Bawaan | Keterangan |
|---|---|---|---|
synthesizer | string | aws | Setel ke synthesizer mana yang Anda gunakan. Berguna saat Anda menggunakan breakParagraphsAboveHardLimit . Ini memungkinkan perpustakaan untuk menentukan panjang istirahat yang benar, karena itu berbeda per layanan synthesizer. |
softLimit | number | 1500 | Jumlah karakter skrip akan mulai mencoba memecah SSML Anda di beberapa bagian. Anda dapat mengubah nomor ini untuk melihat apa yang cocok untuk Anda. |
hardLimit | number | 3000 | Jumlah karakter skrip harus tetap di bawah untuk ukuran maksimum per bagian SSML. Jika ada ukuran batch di atas ini, skrip akan kesalahan. Batas keras ini adalah batas karakter AWS atau Google API yang Anda gunakan. |
breakParagraphsAboveHardLimit | boolean | false | Setel ke true untuk memungkinkan skrip memecah paragraf besar dengan menghapus <p> dan mengganti </p> dengan <break strength="x-strong" /> (untuk aws ) atau <break strength="x-weak" /> (untuk google ). Yang menghasilkan jeda yang sama. Membutuhkan synthesizer Opsi untuk diatur. |
extraSplitChars | string | ,;. | Karakter yang dapat digunakan sebagai penanda split untuk teks biasa. |
Dengan menggunakan opsi synthesizer: 'google' perpustakaan akan mencakup menghitung karakter tag SSML untuk menentukan momen split terbaik. Ini membuat perpustakaan juga bekerja dengan teks Google ke API pidato.
Misalnya: <speak><p>some text</p></speak>
Perilaku default akan menghitung itu sebagai 9 karakter, yang baik untuk AWS Polly, tetapi tidak untuk teks Google untuk berbicara API.
Dengan synthesizer: 'google' akan dihitung sebagai 31 karakter, seperti teks Google ke pidato API menghitungnya.
Ini harus mencegah Anda melihat kesalahan ini saat menggunakan teks Google ke API ucapan:
INVALID_ARGUMENT: 5000 characters limit exceeded. Dengan menambahkan opsi breakParagraphsAboveHardLimit: true Anda mengizinkan skrip untuk memecah paragraf besar dengan menghapus <p> dan mengganti </p> dengan <break strength="x-strong" /> untuk AWS atau <break strength="x-weak" /> untuk Google. Yang menghasilkan jeda yang sama. Ini memungkinkan perpustakaan untuk membagi paragraf besar dengan benar.
Menggunakan opsi ini akan menghasilkan 20 karakter lebih banyak, per paragraf, untuk penggunaan Anda saat menggunakan teks Google ke API wicara.
Jika Anda bekerja dengan paragraf besar dan Anda tidak menggunakan opsi ini, Anda mungkin mengalami kesalahan seperti SSML tag appeared to be too long .
Menggunakan opsi ini disarankan saat Anda memiliki panjang SSML yang melampaui hardLimit .
new SSMLSplit ( {
synthesizer : 'aws' ,
softLimit : 2000 ,
hardLimit : 3000 , // AWS Polly limitation
breakParagraphsAboveHardLimit : true , // optional, but recommended when you have large <p>'s
} ) new SSMLSplit ( {
synthesizer : 'google' ,
softLimit : 4000 ,
hardLimit : 5000 , // Google Text to Speech API limitation
breakParagraphsAboveHardLimit : true , // optional, but recommended when you have large <p>'s
} ) Perpustakaan Polly-SSML-Split oleh @oleglegun sudah menangani pemisahan SSML dengan benar untuk AWS Polly, tetapi tidak berfungsi dengan baik untuk teks Google untuk diucapkan. Jadi saya baru saja memodifikasi paket yang sesuai dengan kebutuhan saya.
polly-ssml-split :synthesizer yang ditambahkan untuk menghitung karakter berdasarkan tag SSML lengkap dan bukan hanya karakter teks yang disertakan. Yang diperlukan jika Anda bekerja dengan teks Google ke API pidato..configure dan gunakan metode konstruktor kelas untuk itu sebagai gantinya.breakParagraphsAboveHardLimit untuk memecah paragraf besar dengan menghapus <p> dan mengganti </p> dengan <break strength="x-strong" /> untuk AWS atau <break strength="x-weak" /> untuk Google. Yang menghasilkan jeda yang sama. Ini memungkinkan perpustakaan untuk membagi paragraf dengan benar dan mengirim lebih sedikit batch ke teks ke API pidato.Kontribusi apa pun dihargai! Harap baca contributing.md kami tentang cara berkontribusi.
Gunakan pendekatan yang digerakkan oleh uji saat mengembangkan fitur baru atau memperbaiki bug.
Mengembangkan:
$ npm install
$ npm run devJalankan tes pada perubahan file:
$ npm test:watchBangun naskah naskah ke JavaScript:
$ npm run buildJalankan semua tes:
$ npm test