Skip to content

Commit d4f7eb9

Browse files
committed
fix: Escape non-ascii characters as xml entities for Microsoft TTS
1 parent 59d8d43 commit d4f7eb9

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

lib/tts-providers/microsoft.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ const request = require('sonos-discovery/lib/helpers/request');
55
const logger = require('sonos-discovery/lib/helpers/logger');
66
const path = require('path');
77
const globalSettings = require('../../settings');
8+
const XmlEntities = require('html-entities').XmlEntities;
9+
10+
const xmlEntities = new XmlEntities();
811

912
const APP_ID = '9aa44d9e6ec14da99231a9166fd50b0f';
1013
const INSTANCE_ID = crypto.randomBytes(16).toString('hex');
@@ -34,7 +37,8 @@ function generateBearerToken(apiKey) {
3437
}
3538

3639
function format(lang, gender, name, text) {
37-
return `<speak version='1.0' xml:lang='en-us'><voice xml:lang='${lang}' xml:gender='${gender}' name='${name}'>${text}</voice></speak>`;
40+
const escapedText = xmlEntities.encodeNonUTF(text);
41+
return `<speak version='1.0' xml:lang='${lang}'><voice xml:lang='${lang}' xml:gender='${gender}' name='${name}'>${escapedText}</voice></speak>`;
3842
}
3943

4044
function microsoft(phrase, voiceName) {

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sonos-http-api",
3-
"version": "1.4.2",
3+
"version": "1.4.3",
44
"description": "A simple node app for controlling a Sonos system with basic HTTP requests",
55
"scripts": {
66
"start": "node server.js"
@@ -15,6 +15,7 @@
1515
"aws-sdk": "^2.12.0",
1616
"basic-auth": "~1.1.0",
1717
"fuse.js": "^2.5.0",
18+
"html-entities": "^1.2.1",
1819
"json5": "^0.5.1",
1920
"node-static": "~0.7.0",
2021
"request-promise": "~1.0.2",

0 commit comments

Comments
 (0)