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', () => {