使用macOS“ say”命令生成音乐

2021-01-10 19:33:48

这个应用程序仅使用Mac Terminal中的say命令来演唱歌曲,利用了说声非常快地运行的简短,重复音节的效果,可以逼近音高。例如,

近似螺距A3。通过改变音节和声音,可以获得很大的音调。

给定一个旋律,此应用会组合说出此旋律的say命令组合。例如,此命令序列唱歌生日快乐。

在安装了Mac Terminal和Python 2.7的计算机上,此应用程序应该可以立即使用。

这会向out_file中写入一个说出命令,该命令会唱歌in_file中的旋律。默认的进出文件是in.txt和out.txt,例如:

每个输入文件的第一行是BPM的速度,随后的每一行是音符和拍子的持续时间。当前支持的注释是F2-F4。有关输入格式的示例,请参见sample_in /。

从音高到(音节,语音)的映射存储在config / pitch_map.config中。每个音高的候选(音节,语音)组合以以下格式存储在pitchs.out中

其中pitch_diff是与真实音符的差异(以美分为单位),而纯度是音高的0-1分。 对于每种(音节,语音)组合,我从声音文件中提取一个波形,然后进行傅立叶变换,然后提取最大频率。 数据分析脚本如下: generate_voice_data.py:处理给定语音的所有(音节,语音)组合,并将(音节,语音,频率,好音)结果打印到outfiles / [voice] .out。 用法:python generate_voice_data.py [voice]。 consolidate_voice_data.py:合并generate_voice_data.py中的输出文件。 查找每个音高的候选(音节,语音)组合,并将其打印到pitchs.out。 play_test_pitch.py:实用脚本,使用给定的音节和语音播放say命令。 用法:python audio.py [音节] [语音]。 感谢Next 4W和MIT Undergrad Math Lounge忍受了我讨厌的声音实验:)