今天工作的時(shí)候偶然發(fā)現(xiàn)了某個(gè)人在《簡(jiǎn)書》中寫的nodejs應(yīng)用百度的TTS Restful接口(TTS是TextToSpeech,說白了就是文本轉(zhuǎn)語(yǔ)音的功能)實(shí)現(xiàn)的文字轉(zhuǎn)語(yǔ)音功能府适。該接口如下,瀏覽器中可以直接訪問:
http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=你要轉(zhuǎn)換的文字
今天突發(fā)奇想拼岳,要用Node.js寫一些表白撩妹的話,通過百度的接口轉(zhuǎn)換成語(yǔ)音推捐,并把該語(yǔ)音保存到電腦里裂问。那如何用Node.js來訪問該接口呢侧啼,下面是我們的主角登場(chǎng):http模塊
首先牛柒,引入我們需要的模塊:
var http = require('http');? ? ? ? // 通過http模塊訪問百度的接口
var querystring = require('querystring');? ? // 處理請(qǐng)求參數(shù)的querystring模塊
var fs = require('fs');? ? ? // fs模塊,用來保存語(yǔ)音文件
var path = require('path');? ? // path模塊痊乾,處理路徑
然后準(zhǔn)備http請(qǐng)求的一些參數(shù):
var postData = querystring.stringify({
? ? ? ? ?"lan": "zh",? ? // zh表示中文
? ? ? ? ?"ie": "UTF-8",? // 字符編碼
? ? ? ? ?"spd": 5,? ? ? // 表示朗讀的語(yǔ)速皮壁,9代表最快,1是最慢(撩妹請(qǐng)用2哪审,繞口令請(qǐng)用9)
? ? ? ? ?"text":"要朗讀的話6昶恰!湿滓!"
});
var options = {
? ? ? ?"method": "GET",
? ? ? ?"hostname": "tts.baidu.com",
? ? ? ?"path": "/text2audio?" + postData
};
準(zhǔn)備好后開始利用http模塊進(jìn)行請(qǐng)求:
// 調(diào)用http模塊的request方法請(qǐng)求百度接口
var req = http.request(options, function (res) {
? ? var chunks = [];
? ? ?res.on("data", function (chunk) {
? ? ? ? ? ? chunks.push(chunk);? // 獲取到的音頻文件數(shù)據(jù)暫存到chunks里面
? ? ? });
? ? ? res.on("end", function () {
? ? ? ? ? ? ?// 這里用到了Buffer模塊滴须,大概意思就是把獲取到的語(yǔ)音文件流存入到body里面,body是一個(gè)Buffer
? ? ? ? ? ? ?var body = Buffer.concat(chunks);
? ? ? ? ? ? ? // 生成的mp3文件存儲(chǔ)的路徑叽奥,文件名叫做iloveu.mp3
? ? ? ? ? ? ? var filePath = path.normalize('./iloveu.mp3');
? ? ? ? ? ? ? ? ?// fs模塊寫文件
? ? ? ? ? ? ? ?fs.writeFileSync(filePath, body);
? ? ? ? });
});
req.end();
OK扔水,有關(guān)注釋已經(jīng)說的很明白了,一切準(zhǔn)備就緒朝氓,把以上代碼放到桌面新建文件main.js中魔市,執(zhí)行命令:
node main.js
運(yùn)行程序后發(fā)現(xiàn)主届,作者的桌面上出現(xiàn)了iloveu.mp3,運(yùn)行一下待德,甜美的聲音就會(huì)粗來啦> !
大家可以把喜歡的話寫進(jìn)去将宪,然后運(yùn)行測(cè)試一下哦绘闷!
本文是根據(jù)node.js目前穩(wěn)定版本的文檔Node.js v4.4.4 Documentation進(jìn)行總結(jié)的,最后感謝您的支持较坛!