【发布时间】:2017-05-04 20:53:53
【问题描述】:
我正在尝试制作西里尔文字转语音节点 js 模块。
我使用node-powershell 运行.NET TTS 命令。它适用于拉丁符号,但不会对任何西里尔符号作出反应。
但是,如果我将命令直接输入到 Powershell 控制台 - 它适用于西里尔文和拉丁文符号。
所以我做了一个问题点是node.js输出编码的划分。
Node.js 脚本:
var sayWin = (text) => {
var Shell = require('node-powershell');
var shell = new Shell({
inputEncoding: 'binary' //tried different endcoding
});
shell.addCommand('Add-Type -AssemblyName System.speech');
shell.addCommand('$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer');
shell.addCommand('$speak.Speak("' + text + '")');
shell.on('output', data => {
console.log("data", data);
});
return shell.invoke();
}
sayWin('latin'); //talk
sayWin('кирилица'); //silence
sayWin('\ufeffкирилица'); //silence trying with BOM
请注意,您可能需要安装 windows TTS 语音包并将其选择为默认系统语音才能播放西里尔文字(我之前做过)。
【问题讨论】:
标签: javascript .net node.js powershell encoding