来源:so.csdn.net
发布时间:Nov 29, 2020, 6:51:01 AM
原地址:https://blog.csdn.net/qq_43477721/article/details/110304275
npm init -y
初始化项目
main.js
npm install http
npm install querystring
var http = require('http'); // 通过http模块访问百度的接口
var querystring = require('querystring'); // 处理请求参数的querystring模块
var fs = require('fs'); // fs模块,用来保存语音文件
var path = require('path'); // path模块,处理路径
var postData = querystring.stringify({
"lan": "zh", // zh表示中文
"ie": "UTF-8", // 字符编码
"spd": 4, // 表示朗读的语速,9代表最快,1是最慢
"text": "乐响起,人生的假面舞会开始,哪面才是真我。荒诞学家有他浮夸独特的审美,唱着歌踏着舞步在这扭曲的世界,去揭露形形色色的假面。欢乐面具下的人是真实在笑吗?恶魔面具下是真实恐怖的人吗?伪装在自己梦里,虚伪的当着小丑。当面具被荒诞学家揭开,营造的美梦被现实取代,才会认清自己。"
});
var options = {
"method": "GET",
"hostname": "tts.baidu.com",
"path": "/text2audio?" + postData
};
// 调用http模块的request方法请求百度接口
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk); // 获取到的音频文件数据暂存到chunks里面
});
res.on("end", function () {
// 这里用到了Buffer模块,大概意思就是把获取到的语音文件流存入到body里面,body是一个Buffer
var body = Buffer.concat(chunks);
// 生成的mp3文件存储的路径,文件名叫做iloveu.mp3
var filePath = path.normalize('./iloveu.mp3');
// fs模块写文件
fs.writeFileSync(filePath, body);
});
});
req.end();
运行 node main.js
即可看到音频文件
=========
还可以调取系统的语音API,这个时候需要安装一个依赖
npm install iconv-lite
test.js
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 = 3; $speak.Speak([Console]::In.ReadLine()); exit`)
.stdin.end(iconv.encode('其实根本没有什么和平分手,在那之前总会经历“争吵、冷战、无视、陌生”所谓的和平只是表象,伏尔泰说,在雪崩的时候,没有一片雪花想要承认,自己是雪崩的罪魁祸首。就像海水慢慢退潮,像月亮落下山头,像一种症状的逐渐消退,都是一样的', 'gbk'));
运行 node test.js 就可以听到系统的语音了。
参考文章
- https://www.jianshu.com/p/35254e144b8e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
- https://biebu.xin/2018/01/16/Windows%E5%B9%B3%E5%8F%B0Node-js%E5%AE%9E%E7%8E%B0%E6%96%87%E6%9C%AC%E8%BD%AC%E8%AF%AD%E9%9F%B3TTS/