语音合成(TTS)应用方案一二三

news/2024/11/8 17:07:58/

前言

语音合成是指将文字转成语音(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 文档 | 讯飞开放平台文档中心


http://www.ppmy.cn/news/806281.html

相关文章

TTS 文字转语音研究,效果原来这么好。

自己做了个在线文字转语音服务,没想到效果竟然这么好 有时候我们需要文字转语音服务,在网上找了好多免费的,但效果都不太好,偶然间发现了微软的Edge浏览器有个大声朗读功能,试了一下,效果竟然出奇的好&…

TTS技术简单介绍和Ekho(余音)TTS的安装与编程

TTS技术简单介绍和Ekho(余音)TTS的安装与编程 zouxy09qq.com http://blog.csdn.net/zouxy09 一、TTS技术简单介绍: TTS技术,TTS是Text To Speech的缩写,即“从文本到语音”。它将计算机自己产生的、或外部输入的文字信…

ChatAudio 通过TTS + STT + GPT 实现语音对话(低仿微信聊天)

效果图 什么是 STT 和 TTS? STT 是语音转文字(Speech To Text)TTS 是文字转语音(Text To Speech) 为什么要使用 SST TTS 如果用户直接输入音频,OpenAI 的 API 中并没有直接使用语音和 GPT 进行对话的功能。…

.net实现简单语音朗读(TTS)功能

首先,添加DotNetSpeech.dll引用,可以在这里直接下载,也可以参照这篇文章说的,在安装Speech SDK以后,在Common Files\Microsoft Shared\Speech\目录下面找到SAPI.dll,用Tlbimp.exe工具将该dll转换成.net平台…

UE5文本转语音TTS插件

UE4.26版本的TTS文本转语音插件,同时有UE5版本 使用起来也非常简单 在文本框输入想要发音的文字 关键的语音调用 项目下载地址:https://download.csdn.net/download/Highning0007/87337400

android原生TTS+语音引擎 实现纯离线 免费的中英TTS

之前使用百度的语音合成 sdk做了个简单的tts,但是它不是真正的免费和纯离线的,所以在查阅相关资料后,使用Android的原生TTS ,因为它不支持中文,需要借助其他语音引擎可实现纯离线 免费的TTS。 Android原生的TTS是不支…

利用正则表达式改善TTS听书效果

最近一直在用 TTS Server 来听书,这个APP的语音很厉害,可以设置两种不同的声音,分别对应【旁白】和【对话】,听书的时候很有感觉。 在最近的一次听书时发现,它用【双引号“”】来区分【对话】的。 这样,出…

语音合成 - TTS pyttsx3

目录 1. 简单介绍 2. 代码示例 1. 简单介绍 pyttsx3 PyPIText to Speech (TTS) library for Python 2 and 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak.https://pypi.org/project/pyttsx3/pyttsx3 是…