我正在使用Processing进行测试文本转语音程序。现在它基本上可以作为钢琴用于字母表的音节,但是当我按住“u”键时,它只是循环音频文件。我希望程序根据我按住“u”键的时间来绘制音频的长度。
所以当我按住“你”时,我发出了“呃呃呃呃呃呃呃”的声音
当我按住“你”时,我想要的是“uuuuuuuuuuuuuuhhh”声音。
处理中是否有功能允许我延长这样的音频文件?如果没有,有没有办法在java或C中执行此操作?
答案 0 :(得分:0)
我认为您可能会尝试研究一些基本概念的“粒度合成”。
如果您可以将核心声音分解为“颗粒”并将这些端到端放置(可能与插值有点重叠以帮助平滑它们),这对于您来说可能“足够好”试图做。要做到这一点,你可能需要足够的知识来编辑音频文件的PCM数据。
循环Java“剪辑”可能无法正常工作,因为很可能在连接处出现点击或静音。然而,我写了一个允许重叠的剪辑循环 - 作为我正在研究的简单混音器的一部分。欢迎您尝试使用它。 http://www.java-gaming.org/topics/simple-audio-mixer-2nd-pass/27943/view.html。有用的关键工具是PFClipLooper。但是PFClipShooters可以很好地用于短音,因为它们允许以不同的音高进行播放 - 允许一些粗略的近似变形。
您正在使用Audacity还是其他DAW?你可能能够把你的声音编辑成可以在那里循环的非常短的东西,制作一个长的“uuuuuu”。给定长元音录音,您可以让元音的播放检查由击键设置的布尔值。 (你熟悉Java的播放代码吗?)你必须在声音停止时写一个干净的音量锥形。此外,这种方法只能达到记录元音的长度。
总的来说,这需要一些工作,这是肯定的。如果您正在寻找现有的图书馆,或“简单的方式”,那么我不知道。我也不熟悉Processing的所有细节以及使用Java库是多么容易。它可以利用libpd(纯数据)或csgrain或其他合成工具之类的工具吗?这样的东西会比我头脑风暴的原始数据操作更加精致。但也许我的建议会奏效。我想知道我的库是否可以从Processing调用?我从来没有测试过。包含源代码,因此您可以查看在那里循环剪辑的逻辑,以及以不同的速度播放。