Windows平臺Node.js實現文字轉語音TTS

剪影Boy發表於2018-01-17

最新有個需求,想在Windows平臺上用Node.js實現文字轉語音 (Text to Speech, TTS) 功能,實現過程中走了一些彎路,總結一下,做個記錄。

因為不要求聽起來多自然,也不考慮跨平臺,所以就打算自己實現一下。PowerShell可以呼叫系統的語音API,程式碼如下:

Add-Type -AssemblyName System.speech;
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer;
$speak.Rate = 5; # 語速,-10 ~ 10,-10最慢,10最快
$speak.Speak('別不信')
複製程式碼

在PowerShell中執行這段程式碼,就可以聽到語速稍快的“別不信”(語音)了。

在Node.js中怎麼用呢?由於PowerShell預設是GBK編碼,考慮編碼轉換,如下:

const { exec } = require('child_process');
const iconv = require('iconv-lite');

exec(`powershell.exe Add-Type -AssemblyName System.speech; $speak = New-Object System.Speech.Synthesis.SpeechSynthesizer; $speak.Rate = 5; $speak.Speak([Console]::In.ReadLine()); exit`).stdin.end(iconv.encode('別不信', 'gbk'));
複製程式碼

這樣就用最簡單的程式碼實現了TTS功能。

個人技術部落格 biebu.xin,原文連結——Windows平臺Node.js實現文字轉語音TTS

相關文章