SSML文字列をバッチに分割します。
hardLimitを構成することにより、API文字の制限を下回ることを確認してください。. , ;またはスペース。構成できます。@olegleGunによるPolly-SSML-Splitに基づいています
パッケージをインストールします:
npm install ssml-split --saveパッケージをインポートし、オプションを設定します。 .split()メソッドを使用して、SSML文字列を分割します。 softLimitを微調整して、自分に合ったものを確認できます。それぞれのAPIの制限制限にhardLimitすることをお勧めします。
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パーツごとに最大サイズの場合は、スクリプトが下に留まる必要があります。バッチサイズがこれより上にある場合、スクリプトはエラーになります。このハード制限は、使用しているAWSまたはGoogle APIの文字制限です。 |
breakParagraphsAboveHardLimit | boolean | false | <p>を削除し、< /p </p> <break strength="x-strong" /> ( aws )または<break strength="x-weak" /> ( googleの場合)に置き換えて、スクリプトが大きなtrueを分割できるように設定します。その結果、同じ一時停止が発生します。オプションsynthesizerを設定する必要があります。 |
extraSplitChars | string | ,;. | プレーンテキストの分割マーカーとして使用できる文字。 |
Option synthesizer: 'google'ライブラリには、SSMLタグ文字をカウントして、可能な限り最適な分割モーメントを決定することになります。これにより、ライブラリはGoogleのテキストからSpeech APIにも連携します。
たとえば、 <speak><p>some text</p></speak>
デフォルトの動作はそれを9文字としてカウントしますが、これはAWS Pollyには問題ありませんが、GoogleのテキストからSpeech APIには適していません。
synthesizer: 'google'は、GoogleのテキストからSpeech APIがカウントするのと同じように、31文字としてカウントされます。
これにより、GoogleのテキストをSpeech APIに使用すると、このエラーが表示されなくなります。
INVALID_ARGUMENT: 5000 characters limit exceeded.オプションを追加することにより、 breakParagraphsAboveHardLimit: true <p>削除し、< /p>を<break strength="x-strong" />に< </p>をAWSまたは<break strength="x-weak" />に置き換えて、スクリプトが大きな段落を分割します。その結果、同じ一時停止が発生します。これにより、ライブラリは大きな段落を適切に分割できます。
このオプションを使用すると、GoogleのテキストをSpeech APIに使用する場合、使用する場合、パラグラフごとに20文字がさらに20文字になります。
大きな段落で作業し、このオプションを使用しない場合、 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
} ) @olegleGunライブラリによるPolly-SSML-Splitは、すでにAWS PollyのSSMLの分割を正しく処理していますが、Googleのテキストからスピーチに適切に機能していませんでした。だから私は自分のニーズに合うようにパッケージを変更しました。
polly-ssml-splitと比較した変更:synthesizerオプションを追加しました。これは、GoogleのテキストからSpeech APIを使用して作業する場合に必要です。.configureメソッドを削除し、代わりにクラスコンストラクターメソッドを使用します。<p>を削除し、< /p>を<break strength="x-strong" /> < </p>をAWSまたは<break強度= "x-weak" />に< /p breakParagraphsAboveHardLimitに置き換えて、大きな段落を分割する<break strength="x-weak" />を追加しました。その結果、同じ一時停止が発生します。これにより、ライブラリは段落を適切に分割し、テキストにより少ないバッチをSpeech APIに送信できます。どんな貢献も感謝しています!貢献方法については、convributing.mdをお読みください。
新機能を開発したり、バグを修正するときに、テスト駆動型アプローチを使用します。
開発する:
$ npm install
$ npm run devファイルの変更でテストを実行します:
$ npm test:watchjavascriptにtypepriccriptを構築する:
$ npm run buildすべてのテストを実行します:
$ npm test