怎么把文字转换成语音

怎么把文字转换成语音,第1张

把文字转换成语音的方式有使用文字转语音助手、迅捷视频剪辑软件、Fromtexttospeech。

文字转语音助手,这是一款手机上的智能朗读配音工具,我们打开之后可以复制粘贴、输入或者导入文档来生成音频,并且它还能标记多音字读音以及插入音效、间隔等,里面有比较丰富的高度拟人配音主播可以试听使用。迅捷视频剪辑软件,作为一款剪辑视频的软件,除了基础合并、分割以外它还支持音视频格式转换、视频压缩以及文字转语音等功能。

Fromtexttospeech,是一个在线文字转语音网站,我们打开之后在空白处输入文字接着选择对应的语言、设置主播以及语速点击createaudiofile就可以啦。不过目前它还不支持中文语音,并且它目前仅有5个配音主播可以选择,以上就是3个文字转语音方法。

文字转语音的用途

为了配视频的音频,现在互联网可以说非常普遍,不管是在喧闹的都市,还是宁静的乡下村庄,都可以捕捉到身影。同时人们不管是宅在家中,还是出门在外,使用较多的也是互联网。如果在互联网中看一段视频,没有声音就和哑剧一样,体验肯定是不好的,如果将文字转换成语音,再配上符合其场景的音乐,那真的会增色不少。

为了发布到音频自媒体平台,将一段文字通过自己的方式转换成语音,发布到一些音频自媒体平台,比如喜马拉雅、千聊,荔枝微课、懒人听书等平台。一旦被平台认可的话,是可以获得一定的报酬的,当然了,想要被认可的条件也是比较的高,要吐字清晰,读准字音,不读错字,包括不添字、不漏字、不调换字的顺序等。

其实还有一个个人感觉更简单的方法,不用在terminal里输入命令:选中需要朗读的文字(注意只能是文字,不能是文件),选择右键菜单中的“Add to iTunes as a spoken track” Screen Shot 再在d出的对话框中选择相应的声音,保存到相应的位置即可。

这篇博客的主要内容是对语音合成 (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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6808863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存