打造我的聊天機器人!
系列三:使用 Voice RSS 實作 Text to Speech(TTS)
Published in
4 min readJun 19, 2016
Voice RSS 提供每天 350 則request,如果超過就需要付費,以下將會介紹如何申請 Voice RSS 服務。
首先先到首頁,Voice RSS 團隊開宗明義就把價目表給列出來了,按下GET STARTED註冊帳號。
填入基本資料後,按下Register按鈕。
註冊完後就會導到My Profile頁面,其中API Key就是待會範例會使用到的密碼。
Voice RSS服務可支援GET method或是POST method,所以待會的範例將會用到request模組,只要透過npm install即可。
本次範例是跑在Mac OS上,所以從Voice RSS服務取得聲音檔後,將會使用mpg123程式和mpg123模組,mpg程式可以透過fink或是brew安裝:
$ fink install mpg123
或是
$ brew install mpg123
至於 mpg123 模組指的是 npm 模組,因此可以用 npm install mpg123 即可。
Voice RSS的參數(Parameter)很多,以下範例將用params物件定義所需的參數:
var params = {
key: 'd5c673a84b6b4b6798cfc2f64e3bbd3e',
src: '好的,請問還需要什麼。',
r: 3,
c: 'MP3',
f: '44khz_16bit_stereo',
hl: 'zh-tw'
};
- key指的是在My Profile頁面中的API Key。
- src指的是所要轉換的字串。
- r:機器人講話的速度,預設是0,範圍為-10到10,3則是快一點。
- c:Audio編碼,有支援MP3, WAV, AAC, OGG, CAF。
- f:Audio格式,支援的格式非常多,可參考官網文件。
- hl:文字的語系,在這範例使用的是繁體中文。
從Voice RSS取得聲音檔後,將使用node.js內建模組fs存成tts.mp3檔,
var writeStream = fs.createWriteStream('./tts.mp3');
request
.post({
url: 'http://api.voicerss.org/?', form: params,
})
.on('error', function (err) {
console.log(err);
})
.pipe(writeStream);
如果mp3檔儲存完成後,使用mpg123模組來播放聲音:
writeStream
.on('finish', function() {
var player = new Mpg();
player.play('./tts.mp3');
});
這樣就完成了機器人說話的功能了。
詳細的範例程式可參考以下網址:
備註:請記得自己申請Voice RSS服務,取得API Key。