Разделяет строки SSML в партии AWS Polly And Google Text to Speech API может потреблять.
hardLimit .. , , ; или пространство. Можно настроить.На основе Polly-SSML-Split от @oleglegun
Установите пакет с:
npm install ssml-split --save Импортируйте пакет и установите параметры. Используйте метод .split() для разделения строки SSML. Вы можете настроить softLimit , чтобы увидеть, что работает для вас. Я предлагаю вам сохранить hardLimit на пределе ограничения соответствующего API:
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>' ) ;| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
synthesizer | string | aws | Установите, какой синтезатор вы используете. Полезно, когда вы используете breakParagraphsAboveHardLimit . Это позволяет библиотеке определять правильную длину разрыва, так как это отличается от услуги синтезатора. |
softLimit | number | 1500 | Количество символов, которые сценарий начнет пытаться разбить ваш SSML в нескольких частях. Вы можете настроить этот номер, чтобы увидеть, что работает для вас. |
hardLimit | number | 3000 | Количество символов, которое сценарий должен оставаться ниже для максимального размера на часть SSML. Если какой -либо размер партии поднимется выше этого, сценарий ошибся. Этот жесткий предел - это предел символов API или Google API, который вы используете. |
breakParagraphsAboveHardLimit | boolean | false | Установите true , чтобы позволить сценарию разбивать большие абзацы, удаляя <p> и заменив </p> на <break strength="x-strong" /> (для aws ) или <break strength="x-weak" /> (для google ). Что приводит к той же паузе. Требуется synthesizer опции. |
extraSplitChars | string | ,;. | Символы, которые можно использовать в качестве маркеров разделения для простого текста. |
Используя опцию synthesizer: 'google' библиотека будет включать подсчет символов Tags SSML, чтобы определить наилучший возможный момент разделения. Это заставляет библиотеку также работать с текстом Google в речевой API.
Например: <speak><p>some text</p></speak>
Поведение по умолчанию считалось бы, как 9 символов, что хорошо для AWS Polly, но не для текста Google в речевой API.
С synthesizer: 'google' он будет считаться 31 символом, как и текст Google в речевой API.
Это должно помешать вам увидеть эту ошибку при использовании текста Google в речевой API:
INVALID_ARGUMENT: 5000 characters limit exceeded. Добавив опцию breakParagraphsAboveHardLimit: true вы позволяете сценарию разбивать большие абзацы, удаляя <p> и заменив </p> на <break strength="x-strong" /> для AWS или <break strength="x-weak" /> для Google. Что приводит к той же паузе. Это позволяет библиотеке должным образом разделить большие абзацы.
Использование этой опции приведет к тому, что еще 20 символов, согласно вашему абзацу, к вашему использованию при использовании текста Google в речевой API.
Если вы работаете с большими абзацами и не используете эту опцию, вы можете столкнуться с ошибками, такими как SSML tag appeared to be too long .
Использование этой опции рекомендуется, когда у вас есть длина SSML, которая превышает 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
} ) Библиотека Polly-SSML-SPLIT от @Oleglegun уже правильно обрабатывает SSML для AWS Polly, но не работал должным образом для текста Google для речи. Поэтому я только что изменил пакет в соответствии с моими потребностями.
polly-ssml-split :synthesizer для подсчета символов на основе полного тега SSML, а не только включенных текстовых символов. Что требуется, если вы работаете с текстом Google в речевой API..configure и вместо этого используйте метод конструктора класса.breakParagraphsAboveHardLimit , чтобы разбить большие параграфы, удалив <p> и заменив </p> на <break strength="x-strong" /> для AWS или <break strength="x-weak" /> для Google. Что приводит к той же паузе. Это позволяет библиотеке должным образом разделить абзац и отправлять меньше партий в текст на речи API.Любой вклад ценится! Пожалуйста, прочитайте наш Appling.md о том, как внести свой вклад.
Используйте тестовый подход при разработке новых функций или исправления ошибок.
Развивать:
$ npm install
$ npm run devЗапустите тесты при изменении файла:
$ npm test:watchТиповая сборка для JavaScript:
$ npm run buildЗапустите все тесты:
$ npm test