求助帖~怎样用某一个猫叫声为基础,模仿出人说话(唱歌)的调调~

    前提背景:现在我做的项目是,将录入的人声,转成猫叫声。类似于,人声在唱生日快乐歌,输出猫叫组成的生日快乐歌。
    有以下几点疑问:
    1、能否以某一个频率的猫叫声作为基准音,调出其他调的猫叫声。
    2、若第1点可以,以什么样的声音作为基准因较为合适
    3、检测出人声的频率曲线后,猫叫声的频率是怎样的对应关系?是否是相对基准音的基础上的频率加减关系
    4、希望大佬们能提供一个猫叫声的midi~ 谢谢

非常感谢,纯程序员,对于midi方面属实不懂~求教大佬

1 Like
  1. 可以,可以通过变换音频播放速度的方式来进行音高的调制。
  2. 建议使用“→”这样音调平缓的音频素材,不要是“:arrow_upper_right::arrow_lower_right:”这样的(或者也可以通过后期处理拉平),然后最好将其音高校正为整的音高(不要是“夹在钢琴缝里”的)。
  3. 建议先将音频转换为MIDI文件:首先进行傅里叶变换获取人声频率并按响度排序(这方面我不太了解),然后将频率转换为音高位置(可以根据网上的十二平均律或者纯律频率的与音高对照表,也可以根据律法的定调方式进行计算),然后依次写入MIDI文件(如果用Python的话可以用mido库,一般是需要指定音符的音高与间隔时间)。
  4. MIDI文件并不记录有音色的采样信息,且General MIDI标准(指定了一系列音色排列)的标准中并不含有猫叫声。所以并不能直接发布带有猫叫声的MIDI文件(Roland GS标准在SC-88音源机上的增强版有“Kitty”音色,但该音源机并不是普遍的标准,目前国内使用的最为广泛的是软件SoundFont采样器,所支持的标准随其SoundFont采样文件而不同,一般是General MIDI标准或初级Roland GS标准,而其并不包含有猫叫声音色)。

总之,我建议你以以下思路进行开发:

  1. 读取音频文件,然后进行傅里叶变换并按响度排序获取各个时间点内响度最大频率为何值。
  2. 将获取到的最大频率转换为音高,将其转换为MIDI音高,写入MIDI文件。
  3. 使用猫叫声音频将MIDI文件转换为音频,具体合成方式我不太清楚。

如果你可以写一个将音符音高数值转换为音频的程序的话,其实这样的项目没有太大必要使用MIDI。如果使用MIDI的话可以制作猫叫声的SoundFont采样并使用SoundFont采样器来将MIDI文件转换为音频文件。