一文了解语音合成技术(TTS)

2023-11-16

TTS是Text To Speech的缩写,即“从文本到语音”。 它将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的汉语口语(或者其他语言语音)输出的技术,隶属于语音合成(SpeechSynthesis)。

语音,在人类的发展过程中,起到了巨大的作用。语音是语言的外部形式,是最直接地记录人的思维活动的符号体系,也是人类赖以生存发展和从事各种社会活动最基本、最重要的交流方式之一。

而让机器开口说话,则是人类千百年来的梦想。语音合成(Text To Speech),是人类不断探索、实现这一梦想的科学实践,也是受到这一梦想不断推动、不断提升的技术领域。

图片

语音合成作为人机交互中必不可少的一个环节,随着计算机的运算和存储能力的迅猛发展,语音合成技术由早期的基于规则的参数合成,到基于小样本的拼接调整合成,并逐渐发展为现在比较流行的基于大语料库的拼接合成。

图片

与此同时,合成语音的自然度和音质都得到了明显的改善,在一定程度上达到了人们的应用需求,从而促进了其在实际系统中的应用。

语音合成发展历史

在第二次工业革命之前,语音的合成主要以机械式的音素合成为主。1779年,德裔丹麦科学家 Christian Gottlieb Kratzenstein 建造了人类的声道模型,使其可以产生五个长元音。

1791年, Wolfgang von Kempelen 添加了唇和舌的模型,使其能够发出辅音和元音。

贝尔实验室于20世纪30年代发明了声码器(Vocoder),将语音自动分解为音调和共振,此项技术由 Homer Dudley 改进为键盘式合成器并于 1939年纽约世界博览会展出。

图片

第一台基于计算机的语音合成系统起源于20世纪50年代。1961年,IBM 的 John Larry Kelly,以及 Louis Gerstman 使用 IBM 704 计算机合成语音,成为贝尔实验室最著名的成就之一。

1975年,第一代语音合成系统之一 —— MUSA(MUltichannel Speaking Automation)问世,其由一个独立的硬件和配套的软件组成。1978年发行的第二个版本也可以进行无伴奏演唱。90 年代的主流是采用 MIT 和贝尔实验室的系统,并结合自然语言处理模型。

基于深度学习的技术

当前的主流方法分为基于统计参数的语音合成、波形拼接语音合成、混合方法以及端到端神经网络语音合成。

基于参数的语音合成包含隐马尔可夫模型(Hidden Markov Model,HMM)以及深度学习网络(Deep Neural Network,DNN)。

图片

语音合成流水线包含 文本前端(Text Frontend) 、声学模型(Acoustic Model) 和 声码器(Vocoder) 三个主要模块:

通过文本前端模块将原始文本转换为字符/音素;通过声学模型将字符/音素转换为声学特征,如线性频谱图、mel 频谱图、LPC 特征等;通过声码器将声学特征转换为波形。

 

图片

语音合成基本流程图

文本前端

文本前端模块主要包含: 分段(Text Segmentation)、文本正则化(Text Normalization, TN)、分词(Word Segmentation, 主要是在中文中)、词性标注(Part-of-Speech, PoS)、韵律预测(Prosody)和字音转换(Grapheme-to-Phoneme,G2P)等。

声学模型

声学模型将字符/音素转换为声学特征,如线性频谱图、mel 频谱图、LPC 特征等。 声学特征以 “帧” 为单位,一般一帧是 10ms 左右,一个音素一般对应 5~20 帧左右。

声学模型需要解决的是 “不等长序列间的映射问题”,“不等长”是指,同一个人发不同音素的持续时间不同,同一个人在不同时刻说同一句话的语速可能不同,对应各个音素的持续时间不同,不同人说话的特色不同,对应各个音素的持续时间不同。

声码器

声码器将声学特征转换为波形,它需要解决的是 “信息缺失的补全问题”。 信息缺失是指,在音频波形转换为频谱图时,存在相位信息的缺失; 在频谱图转换为 mel 频谱图时,存在频域压缩导致的信息缺失。

假设音频的采样率是 16kHz, 即 1s 的音频有 16000 个采样点,一帧的音频有 10ms,则 1s 中包含 100 帧,每一帧有 160 个采样点。 声码器的作用就是将一个频谱帧变成音频波形的 160 个采样点,所以声码器中一般会包含上采样模块。

随着车联网和智能汽车的兴起,越来越多的语音功能被搭载在车机上,仙林智能也将持续深耕智能出行场景,以前沿AI科技赋能智能车联网,为汽车用户带来更便捷、更安全、更有温度的语音交互体验。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文了解语音合成技术(TTS) 的相关文章

随机推荐

  • 「通信原理」格雷码的生成与破译

    通信原理 格雷码的生成与破译 格雷码 gray code 相邻两数之间只有一个bit发生了改变 因此相比于自然编码的二进制系统 格雷编码的更不容易出错 使用卡诺图化简布尔代数式的时候 也会用到格雷码 本文将介绍三种格雷码的生成与破译方法 即
  • 现代密码学案例研究之索尼PS3破解

    ECDSA案例研究之索尼PS3被破解 背景介绍 ECDSA算法介绍 破解算法介绍 Reference 索尼因为PlayStation 3糟糕的加密实现而受到了黑客的破解 那么事情是怎么样的呢 设计了哪些密码学的算法呢 背景介绍 在2010年
  • STM32HAL库-针对芯片内部EEprom读写操作介绍

    目录 概述 一 使用方法 二 STM32CubeMx配置 三 Examples 四 运行结果 五 总结 概述 本篇文章介绍如何使用STM32HAL库 操作芯片内部EEprom读写数据 类似操作Flash 可实现掉电保存数据功能 注 有些型号
  • CSS盒模型垂直居中的方式(前提已知宽高情况下)

    1 flex布局 box height 300px width 300px border 1px solid 000 margin 50px auto flex布局实现 display flex align items center jus
  • java串口通讯详解

    序言 说到开源 恐怕很少有人不挑大指称赞 学生通过开源代码学到了知识 程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程 商家通过开源软件赚到了钱 总之是皆大欢喜 然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例
  • 法兰克机械手手动操作_学习FANUC机器人编程设定,必懂这2个技巧!

    原标题 学习FANUC机器人编程设定 必懂这2个技巧 本文由成途机器人编程培训中心推荐 多年来 Fanuc工业机器人在全球机器人销量市场份额中一直处于无可撼动的地位 尤其是在汽车制造行业 在机器人编程培训学习中 不同品牌的工业机器人编程设定
  • 动态规划之01背包问题(最易理解的讲解)

    01背包问题 是用来介绍动态规划算法最经典的例子 网上关于01背包问题的讲解也很多 我写这篇文章力争做到用最简单的方式 最少的公式把01背包问题讲解透彻 01背包的状态转换方程 f i j Max f i 1 j Wi Pi j gt Wi
  • 使用Qt开发VxWorks应用程序

    使用Qt开发VxWorks应用程序 在嵌入式系统开发中 VxWorks是一款广泛使用的实时操作系统 而Qt则是一款跨平台的GUI开发框架 可以帮助开发者快速创建漂亮的用户界面和交互式应用程序 本文介绍如何使用Qt在VxWorks上开发应用程
  • IEEE latex会议模版中 通讯作者的标注不显示解决方法

    在模版备注里有一段说明 conference papers do not typically use thanks and this command is locked out in conference mode If really ne
  • construct2--仿超级马里奥platform游戏

    construct2作为一个简单的游戏制作工具 能为你们带来制作游戏的快乐 接下来我将讲述一下有关construct中platform游戏的制作 学习platform游戏的制作 我们就可以轻松的做出类似超级马里奥的游戏了 下面我将带来一个制
  • python3callable使用_Python callable()函数用法实例分析

    本文实例讲述了Python callable 函数用法 分享给大家供大家参考 具体如下 python中的内建函数callable 可以检查一个对象是否是可调用的 对于函数 方法 lambda 函数式 类 以及实现了 call 方法的类实例
  • AllenNLP框架学习笔记(数据篇之tokenizers)

    tokenizers是数据模块中的一个子模块 在里面主要包含了token与tokenizer的定义和使用 现在做一个简单的介绍 描述字符串是如何载入到TextFields中的 Token 简单的token抽象 其属性包括文本 偏移量 pos
  • 单链表的原地逆置—适用于O(1)空间复杂度

    单链表的原地逆置 一 代码 二 分析 三 验证 一 代码 先放出代码 注 表尾指针 r 按需设置 在单链表的逆置过程中并不重要 void ReverseList LinkList L LNode r L gt next 建立表尾指针 其实可
  • python中怎样将字符转换成asc编码_Python字符和字符值(ASCII或Unicode码值)转换方法...

    这篇文章主要介绍了Python字符和字符值 ASCII或Unicode码值 转换方法 即把字符串在ASCII值或者Unicode值之间相与转换的方法 需要的朋友可以参考下 目的 将一个字符转化为相应的ASCII或Unicode码 或相反的操
  • 【因果推断与机器学习】Causal Inference:Chapter_4_instrument_variables

    Instrument Variables Introduction 我们在因果识别中的目标是找到一种方法 用可观察的统计关系来表达两个特征之间的因果关系 在许多情况下 我们可以使用图形假设和do calculus来理清我们对统计关系的观察
  • 如何在Linux下配置nginx以及docker环境

    nginx环境的配置 环境准备 编译 php fpm环境的搭建 docker环境的配置 什么是docker 在linux中安装docker nginx环境的配置 环境准备 我这里使用的是 centos7 以下操作都是在这个环境下进行执行的
  • JavaScript 逆向调试常用技巧

    1 断点调试 接下来介绍一个非常重要的功能 断点调试 在调试代码的时候 我们可以在需要的位置上打断点 当对应事件触发时 浏览器就会自动停在断点的位置等待调试 此时我们可以选择单步调试 在面板中观察调用栈 变量值 以更好地追踪对应位置的执行逻
  • 100个python算法超详细讲解:分糖果

    1 问题描述 10个小孩围成一圈分糖果 老师分给第1个小孩10块 第2个小孩2块 第3个小 孩8块 第4个小孩22块 第5个小孩16块 第6个小孩4块 第7个小孩10块 第8个小 孩6块 第9个小孩14块 第10个小孩20块 然后所有的小孩
  • 【AI视野·今日CV 计算机视觉论文速览 第215期】Tue, 8 Jun 2021

    AI视野 今日CS CV 计算机视觉论文速览 Tue 8 Jun 2021 showing first 100 of 133 entries Totally 100 papers 上期速览 更多精彩请移步主页 Daily Computer
  • 一文了解语音合成技术(TTS)

    TTS是Text To Speech的缩写 即 从文本到语音 它将计算机自己产生的 或外部输入的文字信息转变为可以听得懂的 流利的汉语口语 或者其他语言语音 输出的技术 隶属于语音合成 SpeechSynthesis 语音 在人类的发展过程