从MIDI文件进行歌唱合成
该脚本依赖于名古屋工业大学的sinsy.jp网站,该网站实现了基于HMM的歌唱声音合成系统。
你可以在这里找到与伴奏音频合成的示例。
前提条件
- musescore:用于将midi转换为musicxml
- python 3
安装
pip install git+git://github.com/mathigatti/midi2voice.git
使用
你可以通过运行安装的模块来使用它,使用python -m midi2voice
命令。它有多个参数,大部分是可选的,只有当你想指定默认值之外的内容时才需要使用。
python -m midi2voice
-h, --help # 显示此帮助信息并退出
-l LYRICS, --lyrics LYRICS # 包含歌词的txt文件路径
-m MIDI, --midi MIDI # midi文件路径
-lang {english,japanese,mandarin} # 声音的语言(可选 / 默认:英语)
-g {female,male} # 性别声音(女/男)(可选 / 默认:女)
-i VOICEINDEX # 每种语言有不同的声音,例如日语目前有4种不同的女声,普通话只有一种。(可选 / 默认:0)
-t TEMPO # 歌曲的BPM节奏(可选 / 默认80)
-s SYNALPHA # 性别参数[介于-0.8和0.8之间,默认:0.55]
-v VIBPOWER # 颤音强度[介于0和2之间,默认:1]
-p F0SHIFT # 音高移位[以半音为单位,介于-24和24之间,默认:0]
-d DESTINATION_FOLDER # 目标文件夹
使用示例
查看midi和文本示例这里。
# 打印帮助信息
python3 -m midi2voice -h
# 基本示例
python -m midi2voice -l shallow.txt -m shallow.mid
# 给定一个midi文件和一个包含歌词的文本文件生成声音
python -m midi2voice -l shallow.txt -m shallow.mid -lang english -g female -t 96
在Colab上尝试
如果你没有安装python,或者你只想快速检查一下,你可以在线尝试这里。
可用声音
目前sinsy.jp提供以下声音。你可以使用VOICEINDEX参数选择它们。
-
日语
-
女声
- 0 - f00001j_dnn_beta4 : Yoko : 日语
- 1 - f00002j_dnn_beta4 : Xiang-Ling : 日语
- 2 - f01018j_dnn_beta4 : 未定义 : 日语
- 3 - f00001j : Yoko : 日语
- 4 - f00002j : Xiang-Ling : 日语
- 5 - f00004j_beta : Namine Ritsu S : 日语
- 6 - f00005j : 未定义 : 日语
-
男声
- 0 - m01083j_dnn_beta4 : 未定义 : 日语
- 1 - m01083j : 未定义 : 日语
-
-
英语
-
女声
- 0 - f00002e_dnn_beta4 : Xiang-Ling : 英语
- 1 - f00002e : Xiang-Ling : 英语
-
男声
- 0 - m00003e_beta : Matsuo-P : 英语
-
-
普通话
-
女声
- 0 - f00002m : Xiang-Ling : 中文(普通话)
-
男声
- 目前没有
-
致谢
该源代码由Mathias Gatti (@mathigatti)开发,如果你使用它,请记得标注我。在科学出版物中,你可以使用这个DOI。
Gatti, M. (2020). mathigatti/midi2voice v1.0.0 (v1.0.0) [计算机软件]. Zenodo. https://doi.org/10.5281/ZENODO.3969003
支持我的工作
如果你想帮助我继续开发和维护开源项目,你可以通过给我买些ko-fi来贡献。
许可证
MIT