你能告诉我代码获取wav文件和连接它们产生相应的给定文本的声音吗
1视图(30天)
显示旧的评论
Neethu K
2018年3月3日
我救了wav文件给Unicode名称。我需要取回相应的给定的文本和连接他们的声音。我的想法是,当给一个文本输入它读取相应的Unicode和获取的wav文件Unicode名称。比较和连接wav文件,给出了输出。可能吗? ? ?你能给我的代码吗? ?
0评论
接受的答案
沃尔特·罗伯森
2018年3月3日
一旦你输入文本转换成字符我描述的你以前的问题的答案,然后假设字符存储在字符串年代,wav文件存储在目录命名变量audiodir使用4位十六进制文件名称以. wav
audio_data = [];
fs = 1;
为thischar =年代
basename = sprintf (“% 04 x.wav”,thischar);
this_filename = fullfile (audiodir basename);
如果~存在(this_filename“文件”)
流(的音频文件“% s”没有找到,跳过字符“% c \ n”basename thischar);
其他的
(如此,fs) = audioread (this_filename);
oldchan =大小(audio_data, 2);
newchan =大小(如此,2);
如果newchan < oldchan
如此,(最后,oldchan) = 0;
elseifoldchan < newchan
audio_data(结束,newchan) = 0;
结束
audio_data = [audio_data;如此);
结束
结束
在这之后,audio_data将合并后的声音,和fs将频率(假设他们都是一样的。)如果声音文件并不是所有相同数量的渠道然后输出audio_data将渠道发生的最大数量。
记得有一个音频文件的一些短暂的沉默对应无论间隔符号将发生在源文本,以便有一个单词andeverythingdoesnotjustruntogether之间的区别
“这是可能的吗? ? ?”
是的,上面的代码。
但记得在
//www.tatmou.com/matlabcentral/answers/385851-can-you-please-help-me-to-do-a-text-to-speech-sythesiser-using-concatenative-synthesis-in-matlab?s_tid=prof_contriblnk comment_541173
我说这将在哪里工作不佳的英语和其他许多语言不适合吗?语言你感兴趣的是那些工作不佳。
http://languagephrases.com/malayalam/common-malayalam-pronunciation-rules/
。但我猜你将只需要运行上面的代码来为自己证明。
28日评论
Neethu K
2018年3月4日
运行代码后,我没有得到任何声音输出和错误显示为未定义的函数或变量“audiodir”。但我保存在一个文件夹命名为audiodir所需的音频。有需要任何额外的命令来调用它吗? ? ? ? ?为什么产生的声音不是?我还需要一个文本框输入文本框所需的马拉雅拉姆语,请帮助我。
沃尔特·罗伯森
2018年3月4日
我为这段代码表示,“这wav文件存储在变量audiodir”命名的目录中。
这意味着你应该定义一个变量命名audiodir等
audiodir =“C: \ \用户颈\ MATLAB文件\ \ EE403 \最终项目\ malayalm \ wav”;
你应该改变的实际名称目录存储你的wav文件。
“我还需要一个文本框中输入所需的马拉雅拉姆语”文本框
S = inputdlg (“输入文本”,马拉雅拉姆语输入的,1“നാംവാൾട്ടർനന്ദി”);
Neethu K
2018年3月5日
我将文本框添加到项目给你。当我运行这一个错误是发生错误使用sprintf函数没有定义为“细胞”输入。
TTS误差(第7行):= sprintf (“% 04 x。wav, thischar);你能帮我解决这个问题。
Neethu K
2018年3月5日
谢谢先生。在这之后它给一个错误作为下标索引必须是真实的或正整数或逻辑。这个错误发生在audio_data(结束,newchan) = 0;audiodata以来似乎在每个循环迭代改变大小必须考虑preallocating变量或数组在进入零循环,的,或细胞。我们如何解决这个问题? ?
沃尔特·罗伯森
2018年3月5日
audio_data = [];
fs = 1;
为thischar =年代
basename = sprintf (“% 04 x.wav”,thischar);
this_filename = fullfile (audiodir basename);
如果~存在(this_filename“文件”)
流(的音频文件“% s”没有找到,跳过字符“% c \ n”basename thischar);
其他的
(如此,fs) = audioread (this_filename);
如果isempty (audio_data)
audio_data =如此;
其他的
oldchan =大小(audio_data, 2);
newchan =大小(如此,2);
如果newchan < oldchan
如此,(最后,oldchan) = 0;
elseifoldchan < newchan
audio_data(结束,newchan) = 0;
结束
audio_data = [audio_data;如此);
结束
结束
结束
沃尔特·罗伯森
2018年3月13日
你是哪一个MATLAB版本使用,哪些操作系统?问题是影响命令窗口,还是只影响文本()和标签和标题,还是影响uicontrol风格编辑,还是影响了场上,还是.... ?
Neethu K
2018年3月21日
谢谢先生。你能给我一个代码句子分割成单词,单词中字母并获取相应的声音。因为我救了他们中的一些字母和其中的一些单词。所以我需要获取正确wavfiles根据给定的输入。请帮我先生
沃尔特·罗伯森
2018年3月21日
“你能请给我一个代码句子分割成单词,单词中字母和获取相应的声音”
我会犹豫地编写代码来将句子拆分成词甚至对英语(我知道);Malayalm我不会做些尝试,我不知道,有一个名声很不规则。
我不建议分成字母。任何好的语音系统需要分为音素相反——组字母在一起形成一个不同的声音。即便如此,一些组织的音素混合在一起,给你一个修改后的声音。英语是不容易的;看到
http://www.auburn.edu/academic/education/reading_genie/phoncount.html
。看看
https://www.independent.co.uk/news/uk/home-news/an-increasing-number-of-british-people-dont-pronounce-the-word-three-properly-these-maps-explain-why-a7079976.html
如何“正确”的发音可以改变区域,进入形式不匹配字母。
“单词”的定义不匹配的拼写很好。多少个单词是:“不是”?多少个单词是“不是”?“生日”是多少个单词?“出生日期”是不同数量的单词吗?“出生天”是不同的?引用我咨询了几个月前说,当一组文本呈现出截然不同的意义,这是一个“单词”,不管是否有或没有写空间,有或没有连字符。但这并不意味着字符字形成:例如“meta-sentence”的“元”是一个修饰词,是截然不同的,而不是结合一个字。“meta-logic”很可能有两个不同的字,但“元逻辑”
可能
中一个词(因为它将使用会有截然不同的意义),和“元逻辑”绝对是一个词。
Neethu K
2018年3月22日
我的问题是,尽管我拯救了wavfiles马拉雅拉姆语的音素和单词。当我给一个输入文本程序必须检查是否有空间,如果是考虑他们的话所以分裂并存储在一个数组中。接下来检查第一个词是否在数据库中,如果是这样说出来,其他的检查每一个单一字母是在数据库和一个接一个地说出来在输出平稳愉快的讲话。有任何代码或命令吗? ? ?
沃尔特·罗伯森
2018年3月22日
沃尔特·罗伯森
2018年3月22日
然而,根据第12页的底部的“西方影响马拉雅拉姆语语言和文学”由k·m·乔治
https://books.google.ca/books/about/Western_Influence_On_Malayalam_Language.html?id=IP8OAAAAMAAJ&redir_esc=y
,马拉雅拉姆语结合词在某种程度上,梵文的影响之间的妥协(相结合更多)和英语(相结合更少。)因此你不能使用空间打破在马拉雅拉姆语单词变成句子。
Neethu K
2018年3月23日
我发现空间的地方,我得到了一个数组词= 0 d150d13”“0 d050d25”“0 d28”根据给定的输入我。中给出了分离话说Unicode的单引号。现在我需要检查是否这些个字(第一Unicode值在单引号)的数据库。如果不是那么想要检查是否即第一个字母。首先Unicode值(0 d15上图)在数据库和获取wav文件,使声音。请帮我. .
沃尔特·罗伯森
2018年3月23日
audiodir =”;%设置为适当的
词= {“0 d150d13 ' ' 0 d050d25 ' ' 0 d28 '};%认为来自前面的步骤
%处理单词列表寻找文件
听起来= 0 (0,2);
为word_idx = 1:长度(单词)
thisword = {word_idx}字;
前缀= thisword;后缀=”;
而~ isempty(前缀)
basename =[前缀“wav”];
this_filename = fullfile (audiodir basename);
如果存在(this_filename“文件”)
[data_for_sound, fs] = audioread (this_filename);
听起来=[听起来;data_for_sound];% #好< AGROW >
前缀=后缀;后缀=”;
elseif长度(前缀)< = 4
流(“没有声音文件% s ! \ n”前缀);
前缀=后缀;后缀=”;
其他的
lastletter =前缀(end-3:结束);
前缀=前缀(1:end-4);
后缀= (lastletter后缀);% #好< AGROW >
结束
结束
结束
上面的代码自动将最长前缀的词匹配的文件,并继续处理剩下的词。
沃尔特·罗伯森
2018年3月25日
编辑:沃尔特·罗伯森
2018年3月25日
我专门测试代码对单词和单一字母,和这个词作为一个整体的情况并没有出席,但可以被分解成更小的单位。
失败在一个案例中,我的算法模式的情况你有ABC在公元前AB,但ABC和C并不都是礼物。我的算法是一个“贪心”算法首先检查ABC,发现它不存在,那么会AB和发现,它的存在,使C检查并没有发现。一个更好的算法将“预见性”,相反,它应该被分解和BC。
但尺寸不匹配的错误消息是不一个问题你将得到。尺寸不匹配是什么你会得到如果你听起来不都有相同数量的渠道。我的代码开始这个答案已经解决了这个问题——如此和oldchan和newchan逻辑。使用同样的逻辑来取代
[data_for_sound, fs] = audioread (this_filename);
听起来=[听起来;data_for_sound];% #好< AGROW >
不要让我做所有的工作。
更多的答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。
欧洲