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