前言

语音合成是指将文字转成语音(TextToSpeech)进行播放,本文主要介绍三种实现方案。

一、web端实现

通过h5提供的网页语音API来实现,用到speechSynthesis(获取设备上可用的合成声音的信息、控制声音播放、暂停等命令)和SpeechSynthesisUtterance(管理文本声音的属性的实例)。

export default class Speaker {speaker: SpeechSynthesisUtterance;constructor(txt = '', volume = 1, lang = 'zh-CN') {this.speaker = new window.SpeechSynthesisUtterance(txt);this.speaker.volume = volume;this.speaker.lang = lang;}/* 设置文本 */setText(txt) {this.speaker.text = txt;}/*** 设置音量* @param volume 区间[0, 1]*/setVolume(volume) {this.speaker.volume = volume;}/* 播放 */speak() {window.speechSynthesis.speak(this.speaker);}/* 停止播放 */stop = () => {window.speechSynthesis.cancel();};
}

注意speaker.lang如果不指定中文,在非中文环境下无法播放中文。

SpeechSynthesisUtterance包括如下属性

SpeechSynthesisUtterance.lang 语言种类,默认为html里lang的值

SpeechSynthesisUtterance.pitch 音高,默认为1,取值区间为[0, 2]

SpeechSynthesisUtterance.rate 速率,默认为1,取值区间为[0.1, 10]

SpeechSynthesisUtterance.text 文本内容

SpeechSynthesisUtterance.voice 声音对象,从SpeechSynthesis.getVoices()中选取值进行设定,默认是与lang最匹配的一个

SpeechSynthesisUtterance.volume 音量 默认为1,取值区间为[0, 1]

二、node实现

windows环境中,powershell可以调用系统的语音api

Add-Type -AssemblyName System.speech;
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer;
$speak.Rate = 0; # 语速 [-10, 10]
$speak.Speak('语音合成')

只要通过node执行这个指令即可,因为powershell默认是GBK编码,要注意编码转换

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 = 5; $speak.Speak([Console]::In.ReadLine()); exit`).stdin.end(iconv.encode('语音合成', 'gbk'));

三、调用第三方SDK

以上两种方法都是基于系统的支持,声音有明显的机器感,如果需要更加逼真的人声发音,就需要通过第三方服务来完成,BAT及科大讯飞都有提供语音合成的服务,基本都是按调用量收费。

这些服务基本都会提供web端、node端、移动端、小程序等各个平台的解决方案

具体实现可参考相应的官方文档,如 接口说明 - 智能语音交互 - 阿里云、语音合成(流式版)WebAPI 文档 | 讯飞开放平台文档中心

语音合成(TTS)应用方案一二三相关推荐

  1. 【腾讯TMQ】TTS评测--方案介绍和实践分享

    导读 语音合成(Text To Speech,TTS)技术将文本转化为声音,目前广泛应用于语音助手.智能音箱.地图导航等场景.TTS的实现涉及到语言学.语音学的诸多复杂知识,因合成技术的区别,不同的T ...

  2. 吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入

    微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍, ...

  3. 【Android语音合成TTS】百度语音接入方法,和使用技巧详解

    请尊重他人的劳动成果,转载请注明出处:[Android语音合成TTS]百度语音接入方法,和使用技巧详解 Ps. 依托于百度开放云,百度语音为合作伙伴提供了业界领先.永久免费的语音技术服务,目前已上线的 ...

  4. 讯飞文本转语音(语音合成TTS)中添加控制静音和停顿方法

    讯飞的文本转语音和语音合成TTS中,用标点符号.回车换行可以实现一定的停顿效果.如果想要更长时间的静音或停顿怎么办? 插入停顿 这里有个特殊的标记实现静音或停顿,在文字中需要停顿的地方加入 [p100 ...

  5. Unity 百度SDK 之 在线语音合成 TTS WebAPI 功能的实现

    Unity 百度SDK 之 在线语音合成 TTS  WebAPI 功能的实现 目录 Unity 百度SDK 之 在线语音合成 TTS  WebAPI 功能的实现 一.简单介绍 二.百度官网关于在线语音 ...

  6. 离线语音交互技术路线之语音合成(TTS)篇

      在ChatGPT大行其道之际,我心血来潮想要研究研究如何实现离线语音交互,把它和ChatGPT相结合,自己尝试实现个语音助手玩玩.本篇文章主要先从整体上分析了离线语音交互的技术实现路线,以及每个环 ...

  7. 语音合成TTS论文优选:A HYBRID TEXT NORMALIZATION SYSTEM USING MULTI-HEAD SELF-ATTENTION FOR MANDARIN

    声明:语音合成(TTS)论文优选系列主要分享论文,分享论文不做直接翻译,所写的内容主要是我对论文内容的概括和个人看法.如有转载,请标注来源. 欢迎关注微信公众号:低调奋进 A HYBRID TEXT ...

  8. C++ 简单的语音合成(TTS,即文字转语音)类

    如果出现以下错误: error C4996: 'GetVersionExA': 被声明为已否决 关闭SDL: Project Properties > Configuration Propert ...

  9. 2022年1月语音合成(TTS)和语音识别(ASR)论文月报

    ​ 论文统计每月更新一次,主要跟踪语音合成和语音识别的发展状况(很多文章都是在会议后才发出,但不影响统计.统计过程难免存在疏漏,因此统计结果仅供参考.所有文章语音合成领域统计列表请访问http://y ...

  10. 语音合成TTS(Text-To-Speech,从文本到语音)

    以上内容,来自饭团"AI产品经理大本营",点击这里可关注:http://fantuan.guokr.net/groups/219/ 作者:黄钊,5年AI实战经验(图灵机器人),8年 ...

最新文章

  1. 牛客网获取输入rowinput_Python爬虫入门例题:抓取牛客网题目
  2. Ubuntu 12.04软件源、更新源
  3. 9i DB_FILE_MULTIBLOCK_READ_COUNT参数和extent大小的设置
  4. Linux下搭建lamp论坛(phpwind+wordpress+discus)
  5. 上公厕上一半突然被拽出来......
  6. url重写(urlrewrite)的一些系统变量
  7. 一个R包玩转单细胞免疫组库分析,还能与Seurat无缝对接
  8. Apache本地环境部署
  9. h系列标签自动加了bold
  10. Windows 虚拟机介绍以及安装系统教程
  11. 设置360浏览器默认以极速模式打开
  12. 自定义设置HTTP响应头
  13. Python自动生成巡检报告
  14. GitHub和75亿美金
  15. 请各位大虾帮忙!小女子谢过了!:)
  16. 终于有人把TCP/IP讲的明明白白了,搞懂真的不难,只需要看这一篇就够了
  17. VB中的IIF() 函数
  18. Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解
  19. linux 系统swap设置,Linux 系统swap 设置
  20. cesium实现晴,雨,雾,雪等效果

热门文章

  1. C++内存管理之shared_ptr
  2. android camera 废弃,在Ubuntu系统基于ROS使用废旧Android手机摄像头搭建监控设备
  3. linux源码编译安装apache,Ubuntu 16.04源码编译安装Apache 2.4.25教程
  4. mysql字符串多行字符串数组_MySQL从跨行任意长的字符串数组中获取不同的值
  5. 记录学习算法心得(时间复杂度和空间复杂度)
  6. C++字符串输入输出操作
  7. PBC密码学库使用指南
  8. muddleftpd配置和用法
  9. OTT系统和IPTV方案哪个更适合用于搭建局域网视频点播直播
  10. Python语言基础