nodejs 调用百度TextToSpeech的api

来源:互联网 发布:c语言如何产生随机数 编辑:程序博客网 时间:2024/06/01 07:32

1.概述

实现对 ‘http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=你要转换的文字‘ 这个百度TextToSpeech文字转语音api的使用,生成一个mp3文件。

2.代码:

server.js

var path = require('path')var http = require('http')var querystring = require('querystring')var fs = require('fs')var data = querystring.stringify({  "lan": "zh",      "ie": "UTF-8",    "spd": 3,        "text": '小可爱你超级可爱的嘿嘿嘿爱你哦'})var option = {    'method':'get',    'hostname':"tts.baidu.com",    'path':'/text2audio?'+ data}var req = http.request(option,function(res){    var chunks=[];     res.on('data',function(chunk){         chunks.push(chunk);     });     res.on('end',function(){          console.log(chunks);          var mybuffer=Buffer.concat(chunks);    var filePath = path.normalize('./voice.mp3');    // fs模块写文件        fs.writeFileSync(filePath, mybuffer);     })})req.end();

3.分析
(1) 运行node server.js即可在文件夹找到voice.mp3文件。本程序使用了百度api,主要学习http.request的使用以及对于buffer的处理。
(2)http.request(option,callback()); option中设定访问方式为get还是post,hostname以及path ,path中需要host之后的路径以及参数,这里的参数通过querystring把对象序列化成一个 URL 查询字符串的对象。(比如:querystring.stringify({ foo: ‘bar’, baz: [‘qux’, ‘quux’], corge: ” });
// 返回 ‘foo=bar&baz=qux&baz=quux&corge=’)
(3)请求返回的Buffer文件可直接写入mp3文件,Buffer为nodejs读取或操作二进制数据流的缓冲类型,Buffer.concat() 参数为多个buffer拼接的数组,方法返回的是拼接得到的一个buffer类型结果,然后创建mp3文件,用fs.writeFileSync(filePath, mybuffer)写入buffer数据。
(4)注意最后一定要运行req.end()方法,这个是必须的,否则无法得到数据。

原创粉丝点击