NodeJS 实现文字转语音

来源: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/