From 3827195aeaba00bd0a15d72b269d1006390e5204 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 12 Sep 2022 10:53:51 +0800 Subject: [PATCH 1/2] Catch Maximum call stack size exceeded error when converting html to text and fallback to linkedom --- packages/text-to-speech/src/htmlToSsml.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/text-to-speech/src/htmlToSsml.ts b/packages/text-to-speech/src/htmlToSsml.ts index e4aca410b..7eb1e1924 100644 --- a/packages/text-to-speech/src/htmlToSsml.ts +++ b/packages/text-to-speech/src/htmlToSsml.ts @@ -274,8 +274,18 @@ const textToUtterance = ({ isHtml?: boolean }): Utterance => { const text = textItems.join('') - const plainText = isHtml ? htmlToText(text, { wordwrap: false }) : text - const wordCount = tokenizer.tokenize(plainText).length + let textWithWordOffset = text + if (isHtml) { + try { + textWithWordOffset = htmlToText(text, { wordwrap: false }) + } catch (err) { + console.error('Unable to convert HTML to text', { text, err }) + textWithWordOffset = + parseHTML(text).document.documentElement.textContent ?? text + console.debug('Converted HTML to text', { textWithWordOffset }) + } + } + const wordCount = tokenizer.tokenize(textWithWordOffset).length return { idx, text, From cb13d084212249d65fda75acb3293d8d39de255e Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 12 Sep 2022 10:55:26 +0800 Subject: [PATCH 2/2] Strip Emojis from title --- packages/text-to-speech/src/htmlToSsml.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/text-to-speech/src/htmlToSsml.ts b/packages/text-to-speech/src/htmlToSsml.ts index 7eb1e1924..9999e9f24 100644 --- a/packages/text-to-speech/src/htmlToSsml.ts +++ b/packages/text-to-speech/src/htmlToSsml.ts @@ -273,7 +273,7 @@ const textToUtterance = ({ voice?: string isHtml?: boolean }): Utterance => { - const text = textItems.join('') + const text = stripEmojis(textItems.join('')) let textWithWordOffset = text if (isHtml) { try {