Réplit les chaînes SSML en lots Aws Polly ánd Text to Speech API peut consommer.
hardLimit .. , ; ou l'espace. Peut être configuré.Basé sur Polly-SSML-Split par @oleglegun
Installez le package avec:
npm install ssml-split --save Importez le package et définissez les options. Utilisez la méthode .split() pour diviser votre chaîne SSML. Vous pouvez modifier le softLimit pour voir ce qui fonctionne pour vous. Je vous suggère de garder l' hardLimit à la limitation de la limitation de l'API respective:
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>' ) ;| Option | Taper | Défaut | Description |
|---|---|---|---|
synthesizer | string | aws | Définissez à quel synthétiseur que vous utilisez. Utile pour le moment où vous utilisez breakParagraphsAboveHardLimit . Il permet à la bibliothèque de déterminer la longueur de rupture correcte, car cela diffère par service de synthétiseur. |
softLimit | number | 1500 | La quantité de caractères que le script commencera à essayer de rompre votre SSML en plusieurs parties. Vous pouvez modifier ce numéro pour voir ce qui fonctionne pour vous. |
hardLimit | number | 3000 | La quantité de caractères que le script doit rester en dessous pour une taille maximale par pièce SSML. Si une taille de lot va au-dessus de cela, le script sera erroné. Cette limite dure est la limite de caractère de l'AWS ou de l'API Google que vous utilisez. |
breakParagraphsAboveHardLimit | boolean | false | Réglé sur true pour permettre au script de briser de grands paragraphes en supprimant le <p> et en remplaçant le </p> par un <break strength="x-strong" /> (pour aws ) ou <break strength="x-weak" /> (pour google ). Ce qui entraîne la même pause. Nécessite synthesizer d'option à définir. |
extraSplitChars | string | ,;. | Caractères qui peuvent être utilisés comme marqueurs divisés pour le texte brut. |
En utilisant le synthesizer: 'google' la bibliothèque inclura le comptage des caractères SSML pour déterminer le meilleur moment de fractionnement possible. Cela fait que la bibliothèque fonctionne également avec l'API Text to Speech de Google.
Par exemple: <speak><p>some text</p></speak>
Le comportement par défaut compterait que comme 9 caractères, ce qui est bien pour AWS Polly, mais pas pour l'API du texte de Google à la parole.
Avec synthesizer: 'google' il comptera comme 31 caractères, tout comme le texte de Google à l'api de la parole le compte.
Cela devrait vous empêcher de voir cette erreur lors de l'utilisation de l'API du texte de Google à la parole:
INVALID_ARGUMENT: 5000 characters limit exceeded. En ajoutant l'option breakParagraphsAboveHardLimit: true vous permettez au script de briser de grands paragraphes en supprimant le <p> et en remplaçant le </p> par un <break strength="x-strong" /> pour AWS ou <break strength="x-weak" /> pour Google. Ce qui entraîne la même pause. Cela permet à la bibliothèque de diviser correctement les grands paragraphes.
L'utilisation de cette option se traduira par 20 caractères supplémentaires, par paragraphe, à votre utilisation lors de l'utilisation de l'API du texte de Google à la parole.
Si vous travaillez avec de grands paragraphes et que vous n'utilisez pas cette option, vous pourriez rencontrer des erreurs comme SSML tag appeared to be too long .
L'utilisation de cette option est recommandée lorsque vous avez une longueur de SSML qui va au-dessus de l' 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
} ) La bibliothèque Polly-SSML par la bibliothèque @oleglegun gère déjà correctement la division de SSML pour AWS Polly, mais ne fonctionnait pas correctement pour le texte de Google. Je viens donc de modifier le package pour répondre à mes besoins.
polly-ssml-split :synthesizer pour compter les caractères en fonction de la balise SSML complète et pas seulement des caractères de texte inclus. Ce qui est requis si vous travaillez avec l'API du texte à la parole de Google..configure et utiliser la méthode du constructeur de classe à la place.breakParagraphsAboveHardLimit pour briser de grands paragraphes en supprimant le <p> et en remplaçant le </p> par un <break strength="x-strong" /> pour AWS ou <break strength="x-weak" /> pour Google. Ce qui entraîne la même pause. Cela permet à la bibliothèque de diviser correctement le paragraphe et d'envoyer moins de lots au texte aux API de la parole.Toute contribution est appréciée! Veuillez lire notre contribution.md sur la façon de contribuer.
Utilisez une approche axée sur le test lors du développement de nouvelles fonctionnalités ou de la correction des bogues.
Développer:
$ npm install
$ npm run devExécutez des tests sur le changement de fichier:
$ npm test:watchCréer des dactylographies à JavaScript:
$ npm run buildExécutez tous les tests:
$ npm test