Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用神经网络生成文本到语音_Python_Neural Network_Speech Recognition_Text To Speech - Fatal编程技术网

Python 如何用神经网络生成文本到语音

Python 如何用神经网络生成文本到语音,python,neural-network,speech-recognition,text-to-speech,Python,Neural Network,Speech Recognition,Text To Speech,我正在为一种叫做卡纳达的语音语言创建一个文本到语音的系统,我计划用神经网络来训练它。输入是一个单词/短语,而输出是相应的音频 在实施网络的时候,我认为输入应该是单词或短语的分段字符,因为输出的发音只取决于构成单词的字符,不像我们有单词和词组要考虑的单词。但是,我不知道应该如何训练输出 因为我的数据集是单词/短语和相应的MP3文件的集合,所以我考虑使用pydub将这些文件转换为WAV,用于所有音频文件 from pydub import AudioSegment sound = AudioSegm

我正在为一种叫做卡纳达的语音语言创建一个文本到语音的系统,我计划用神经网络来训练它。输入是一个单词/短语,而输出是相应的音频

在实施网络的时候,我认为输入应该是单词或短语的分段字符,因为输出的发音只取决于构成单词的字符,不像我们有单词和词组要考虑的单词。但是,我不知道应该如何训练输出

因为我的数据集是单词/短语和相应的MP3文件的集合,所以我考虑使用pydub将这些文件转换为WAV,用于所有音频文件

from pydub import AudioSegment
sound = AudioSegment.from_mp3("audio/file1.mp3")
sound.export("wav/file1.wav", format="wav")
接下来,我打开wav文件,并将其转换为值介于0和1之间的规范化字节数组

import numpy as np
import wave

f = wave.open('wav/kn3.wav', 'rb')
frames = f.readframes(-1)

#Array of integers of range [0,255]
data = np.fromstring(frames, dtype='uint8')

#Normalized bytes of wav
arr  = np.array(data)/255
我应该如何训练这个

从这里开始,我不知道如何用输入文本来训练它。因此,我需要在第一层和最后一层中输入和输出神经元的数量可变,因为第一层的字符数和对应的wave Last层的字节数对于每个输入都会发生变化

由于RNN处理这样的可变数据,我认为它在这里会派上用场

如果我错了,请纠正我,但神经网络的输出实际上是介于0和1之间的概率值。然而,我们不是在处理分类问题。音频可以是任何东西,对吗?在我的例子中,输出应该是与WAV文件相对应的字节向量。因此,如果没有每个单词的标准化步骤,将有大约40000个值在0到255之间的单词。如何训练这些语音数据?如有任何建议,我们将不胜感激

编辑1:回应Aaron的评论

据我所知,音素是语言的基本发音。那么,为什么我需要一个神经网络来映射语音的音素标签呢?我不能说,每当你看到这个字母表,就这样发音吗。毕竟,这种语言,卡纳达语,是语音的:没有无声的单词。所有单词的发音都与拼写相同。那么,神经网络在这方面有什么帮助呢

在输入新文本时,我只需要将其分解为相应的字母表,这些字母表也是音素,并检索从WAV转换为原始字节数据的文件。现在,将字节合并在一起并将其转换为wav文件


这是不是太简单了?我是不是遗漏了什么?对于这种特殊的语言Kannada来说,神经网络的意义何在?

它不是微不足道的,需要特殊的体系结构。您可以在和的出版物中阅读其说明

你可能还想学习


总的来说,纯端到端语音合成仍然不起作用。如果你认真对待文本到语音的转换,那么最好研究传统的系统,比如

简而言之,你必须拿出一个功能列表。列表中的内容以及如何度量和表示取决于您试图解决的问题。我已经知道输入文本的特征。我不关心输入格式。我被难倒的是输出层。如何通过神经网络在文本输入上训练语音输出?首先需要找到一种方法将文本翻译成音素。这通常是通过精心策划的数据库而不是学习算法来完成的,但在你的例子中,你真正使用的是神经网络。录音音素的音频文件或多或少地附加在一起形成单词。我编辑了我的答案以回应@Aaron的评论。请检查我答案的编辑1。@AjayH我刚刚对卡纳达做了一些初步的维基百科研究,虽然一般说来它是纯语音的,但它也提到了至少一个违反该规则的例子。还提到有多达20种方言。虽然这种简单的方法对于许多情况可能已经足够了,但您仍然应该明确地包括一个框架,以便为需要进行例外的大于单字母的模式添加覆盖。我在“编辑1”下编辑了我的答案,以回应另一条评论。你能告诉我你的想法吗。