SSML 문자열을 배치로 나눕니다. aws polly Ánd Google의 텍스트 to Speech API가 소비 할 수 있습니다.
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> <break strength="x-strong" /> ( aws ) 또는 <break strength="x-weak" /> ( google 의 경우)로 대체하여 큰 단락을 분해하도록 true 로 설정하십시오. 동일한 일시 정지가 발생합니다. 옵션 synthesizer 설정해야합니다. |
extraSplitChars | string | ,;. | 일반 텍스트의 분할 마커로 사용할 수있는 문자. |
옵션 synthesizer: 'google' 은 SSML 태그 문자 계산을 위해 최상의 분할 모멘트를 결정합니다. 이로 인해 라이브러리는 Google의 텍스트 To Speech API 와도 작동합니다.
예 : <speak><p>some text</p></speak>
기본 동작은이를 9 자로 간주합니다. 이는 AWS Polly에게는 적합하지만 Google의 텍스트 To Speech API에는 적합하지 않습니다.
synthesizer: 'google' 은 Google의 텍스트 To Speech API가 계산하는 것처럼 31 자로 계산됩니다.
이렇게하면 Google의 텍스트 To Speech API를 사용할 때이 오류가 표시되지 않아야합니다.
INVALID_ARGUMENT: 5000 characters limit exceeded. 옵션을 추가하여 breakParagraphsAboveHardLimit: true <p> 제거하고 < /p>를 <break strength="x-strong" /> 로 </p> 로 대체하거나 <break strength="x-weak" /> 로 대체하여 큰 단락을 분해 할 수 있습니다. 동일한 일시 정지가 발생합니다. 이를 통해 라이브러리는 큰 단락을 올바르게 분할 할 수 있습니다.
이 옵션을 사용하면 Google의 텍스트 To Speech API를 사용할 때 단락 당 20자가 더 많이 사용됩니다.
큰 단락으로 작업 하고이 옵션을 사용하지 않으면 SSML tag appeared to be too long .
이 옵션을 사용하는 것은 hardLimit 보다 SSML 길이가있는 경우 권장됩니다.
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 방법을 제거하고 대신 클래스 생성자 메소드를 사용하십시오.breakParagraphsAboveHardLimit 옵션을 추가하여 <p> 제거하고 <break strength="x-strong" /> </p> <break strength="x-weak" /> 동일한 일시 정지가 발생합니다. 이를 통해 라이브러리는 단락을 올바르게 분할하고 텍스트로 배치를 덜 보낼 수 있습니다.모든 기여에 감사드립니다! 기여 방법에 대한 기여 .md를 읽으십시오.
새로운 기능을 개발하거나 버그를 수정할 때 테스트 중심의 접근 방식을 사용하십시오.
개발하다:
$ npm install
$ npm run dev파일 변경에서 테스트 실행 :
$ npm test:watchJavaScript로 TypeScript 빌드 :
$ npm run build모든 테스트 실행 :
$ npm test