From 68a932ad0b9ac45bc077bed9d780af85b4105a3b Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 7 Sep 2022 23:13:12 +0800 Subject: [PATCH] Escape entityName in ssml --- packages/text-to-speech/src/textToSpeech.ts | 3 ++- packages/text-to-speech/test/htmlToSsml.test.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/text-to-speech/src/textToSpeech.ts b/packages/text-to-speech/src/textToSpeech.ts index 4169e5401..449668548 100644 --- a/packages/text-to-speech/src/textToSpeech.ts +++ b/packages/text-to-speech/src/textToSpeech.ts @@ -8,6 +8,7 @@ import { SpeechSynthesizer, } from 'microsoft-cognitiveservices-speech-sdk' import { endSsml, htmlToSsmlItems, ssmlItemText, startSsml } from './htmlToSsml' +import * as _ from 'underscore' export interface TextToSpeechInput { text: string @@ -150,7 +151,7 @@ export const synthesizeTextToSpeech = async ( // for utterance const start = startSsml(ssmlOptions) wordOffset = -start.length - const ssml = `${start}${input.text}${endSsml()}` + const ssml = `${start}${_.escape(input.text)}${endSsml()}` const result = await speakSsmlAsyncPromise(ssml) return { audioData: Buffer.from(result.audioData), diff --git a/packages/text-to-speech/test/htmlToSsml.test.ts b/packages/text-to-speech/test/htmlToSsml.test.ts index 5f3b6bc90..0ab3acdf1 100644 --- a/packages/text-to-speech/test/htmlToSsml.test.ts +++ b/packages/text-to-speech/test/htmlToSsml.test.ts @@ -7,7 +7,7 @@ describe('htmlToSsmlItems', () => { primaryVoice: 'test-primary', secondaryVoice: 'test-secondary', language: 'en-US', - rate: 1, + rate: '1.0', } describe('a simple html file', () => {