亲爱的读者们,你是否对texttospeech和speechtotext和texttospeech的区别的相关问题感到困惑?别担心,今天我将为你解答这些问题,让你对此有更清晰的认识。
Text to Speech 翻译成中文是什么意思
语音合成(将人类语音用人工的方式合成)
Text to Speech简称TTS。即从文本转语音。它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。TTS语音合成技术即将覆盖国标一、二级汉字,具有英文接口,自动识别中、英文,支持中英文混读。所有声音采用真人普通话为标准发音,实现了120-150个汉字/秒的快速语音合成,朗读速度达3-4个汉字/秒,使用户可以听到清晰悦耳的音质和连贯流畅的语调。
speechtotext和texttospeech的区别
speechtotext和texttospeech的区别是Speech-to-Text是将人类语音转换为文本的技术,Text-to-Speech是将文本转化为语音的技术。根据查询相关公开信息显示:Speech-to-Text,即语音转文本,是一种将人类语音转换为文本的技术。Text-to-Speech,即文本合成语音,是将文本转化为语音的技术。Speech-to-Text可以将说话者的语音录制成数字信号,通过语音识别软件将其转化为文本,并对其进行解释和分析。这项技术可以应用于音频转写、语音搜索、自然语言处理等方面。texttospeech是利用语音合成技术,将书面文字转换成流利的口语输出。主要应用于机器人交互、语音助手、语音播报等领域。
语音合成简介 Text-to-speech
这篇博客的主要内容是对语音合成(text to speech)的背景知识进行介绍。希望可以让读者通俗易懂的了解语音合成的工作原理,并对为了理解state-of-the-art text to speech的算法做基础。
这个简介主要基于这篇论文“Wavenet: a generative model for raw audio”的附录介绍的。论文链接如下: https://arxiv.org/pdf/1609.03499.pdf,以及stanford CS224S的课程,链接如下 http://web.stanford.edu/class/cs224s/lectures/224s.17.lec14.pdf
语音合成是通过文字人工生成人类声音,也可以说语音生成是给定一段文字去生成对应的人类读音。这里声音是一个连续的模拟的信号。而合成过程是通过计算机,数字信号去模拟。这里就需要数字信号处理模拟信号信息,详细内容可参考 [1]。
图片1,就是一个例子用来表示人类声音的信号图。这里横轴是时间,纵轴是声音幅度大小。声音有三个重要的指标,振幅(amplitude),周期(period)和频率(frequency)。振幅指的是波的高低幅度,表示声音的强弱,周期和频率互为倒数的关系,用来表示两个波之间的时间长度,或者每秒震动的次数。 而声音合成是根据声波的特点,用数字的方式去生成类似人声的频率和振幅,即音频的数字化。了解了音频的数字化,也就知道了我们要生成的目标函数。
音频的数字化主要有三个步骤。
取样(sampling):在音频数字化的过程,采样是指一个固定的频率对音频信号进行采样,采样的频率越高,对应的音频数据的保真度就越好。当然,数据量越大,需要的内存也就越大。如果想完全无损采样,需要使用Nyquist sampling frequency,就是原音频的频率2倍。
量化(quantization):采样的信号都要进行量化,把信号的幅度变成有限的离散数值。比如从0到 1,只有四个量化值可以用0, 0.25, 0.5, 0.75的话,量化就是选择最近的量化值来表示。
编码(coding):编码就是把每个数值用二进制的方式表示,比如上面的例子,就可以用2bit二进制表示, 00, 01, 10, 11。这样的数值用来保存在计算机上。
采样频率和采样量化级数是数字化声音的两个主要指标,直接影响声音的效果。对于语音合成也是同样,生成更高的采样频率和更多多的量化级数(比如16 bit),会产生更真实的声音。 通常有三个采样频率标准
1. 44.1kHz采样,用于高品质CD音乐
2. 22.05kHz采样,用于语音通话,中品质音乐
3. 11.025kHz采样,用于低品质声音。
而量化标准一般有8位字长(256阶)低品质量化和16位字长(65536阶)高品质量化。
还有一个重要参数就是通道(channel),一次只采样一个声音波形为单通道,一次采样多个声音波形就是多通道。
所以在语音合成的时候,产生的数据量是数据量=采样频率*量化位数*声道数,单位是bit/s。一般声道数都假设为1.。采样率和量化位数都是语音合成里的重要指标,也就是设计好的神经网络1秒钟必须生成的数据量。
文本分析就是把文字转成类似音标的东西。比如下图就是一个文本分析,用来分析“PG&E will file schedules on April 20.”文本分析主要有四个步骤,文字的规范化,语音分析,还有韵律分析。下面一一道来。
文本分析首先是要确认单词和句子的结束。空格会被用来当做隔词符.句子的结束一般用标点符号来确定,比如问号和感叹号(?!),但是句号有的时候要特别处理。因为有些单词的缩写也包含句号,比如 str."My place on Main Str. is around the corner".这些特别情况一般都会采取规则(rule)的方式过滤掉。
接下来是把非文字信息变成对应的文字,比如句子中里有日期,电话号码,或者其他阿拉伯数字和符号。这里就举个例子,比如, I was born April 14.就要变成, I was born April fourteen. 这个过程其实非常繁琐,现实文字中充满了缩写,比如CS, 拼写错误,网络用语, tmr--> tomorrow.解决方式还是主要依靠rule based method,建立各种各样的判断关系来转变。
语音分析就是把每个单词中的发音单词标出来,比如Fig. 3中的P,就对应p和iy,作为发音。这个时候也很容易发现,发音的音标和对应的字母不是一一对应的关系,反而需要音标去对齐(allignment)。这个对齐问题很经典,可以用很多机器学习的方法去解决,比如Expectation–maximization algorithm.
韵律分析就是英语里的语音语调,汉语中的抑扬顿挫。我们还是以英语为例,韵律分析主要包含了:重音(Accent),边界(boundaries), 音长(duration),主频率(F0).
重音(Accent)就是指哪个音节发生重一点。对于一个句子或者一个单词都有重音。单词的重音一般都会标出来,英语语法里面有学过,比如banana这个单词,第二个音节就是重音。而对于句子而言,一样有的单词会重音,有的单词会发轻音。一般有新内容的名词,动词,或者形容词会做重音处理。比如下面的英语句子, surprise就会被重音了,而句子的重音点也会落到单词的重音上,第二个音节rised,就被重音啦。英语的重音规则是一套英语语法,读者可以自行百度搜索。
I’m a little sur prised to hear it cha racterized as up beat.
边界(Boundaries)就是用来判断声调的边界的。一般都是一个短语结束后,有个语调的边界。比如下面的句子, For language,就有一个边界,而I后面也是一个边界.
For language, I, the author of the blog, like Chinese.
音长(Duration)就是每个音节的发声长度。这个通俗易懂。 NLP里可以假定每个音节单词长度相同都是 100ms,或者根据英语语法,动词,形容词之类的去确定。也可以通过大量的数据集去寻找规律。
主频率(F0)就是声音的主频率。 应该说做傅里叶转换后,值(magnitude)最大的那个。也是人耳听到声音认定的频率。一个成年人的声音主频率在 100-300Hz之间。这个值可以用线性回归来预测,机器学习的方法预测也可以。一般会认为,人的声音频率是连续变化的,而且一个短语说完频率是下降趋势。
文本分析就介绍完了,这个方向比较偏语言学,传统上是语言学家的研究方向,但是随着人工智能的兴起,这些feature已经不用人为设计了,可以用端到端学习的方法来解决。比如谷歌的文章 TACOTRON: TOWARDS END-TO-END SPEECH SYNTHESIS就解救了我们。
https://arxiv.org/pdf/1703.10135.pdf
这个部分就比较像我们算法工程师的工作内容了。在未来的博客里,会详细介绍如何用Wavenet和WaveRNN来实现这一步骤的。今天这个博客就是简介一下算法。
这里说所谓的waveform synthesis就是用这些语言特征值(text features)去生成对应的声波,也就是生成前文所说的采样频率和振幅大小(对应的数字信号)。这里面主要有两个算法。
串接合成(concatenative speech synthesis):这个方法呢,就是把记录下来的音节拼在一起来组成一句话,在通过调整语音语调让它听起来自然些。比较有名的有双音节拼接(Diphone Synthesis)和单音节拼接(Unit Selection Synthesis)。这个方法比较繁琐,需要对音节进行对齐(alignment),调整音节的长短之类的。
参数合成(Parametric Synthesis):这个方法呢,需要的内存比较小,是通过统计的方法来生成对应的声音。模型一般有隐马尔科夫模型(HMM),还有最近提出的神经网络算法Wavenet, WaveRNN.
对于隐马尔科夫模型的算法,一般都会生成梅尔频率倒谱系数(MFCC),这个是声音的特征值。感兴趣的可以参考这篇博客去了解 MFCC。
https://www.cnblogs.com/BaroC/p/4283380.html
对于神经网络的算法来说,一般都是生成256个 quantized values基于softmax的分类器,对应声音的 256个量化值。 WaveRNN和wavenet就是用这种方法生成的。
下面是我学习语音合成的一些资料,其中stanford cs224s是强力推荐的,但是这个讲义讲的逻辑不是很清楚,要反复看才会懂。
UCSB Digital Speech Processing Course课程,声音信号处理的基础。建议读一遍,链接如下, https://www.ece.ucsb.edu/Faculty/Rabiner/ece259/
Stanford CS224S http://web.stanford.edu/class/cs224s/
WaveRNN, https://arxiv.org/pdf/1609.03499.pdf
音频的数字化, https://wenku.baidu.com/view/68fbf1a4f61fb7360b4c658b.html
非常感谢您的阅读!我们希望本文对于解决您关于texttospeech和speechtotext和texttospeech的区别的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。