Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oxygen-dioxide/dvfile
A python library for reading and writing deepvocal dv file
https://github.com/oxygen-dioxide/dvfile
deepvocal dv midi mido music music21 python singing-synthesis
Last synced: 3 months ago
JSON representation
A python library for reading and writing deepvocal dv file
- Host: GitHub
- URL: https://github.com/oxygen-dioxide/dvfile
- Owner: oxygen-dioxide
- License: other
- Created: 2020-10-15T13:50:53.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-01-14T10:28:45.000Z (almost 4 years ago)
- Last Synced: 2024-07-28T00:38:20.430Z (4 months ago)
- Topics: deepvocal, dv, midi, mido, music, music21, python, singing-synthesis
- Language: Python
- Homepage: https://pypi.org/project/dvfile/
- Size: 1.36 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dvfile-python
## 介绍
操作[deepvocal](https://www.deep-vocal.com/) dv文件的python库。
本python库依赖[numpy](https://numpy.org/)
由于dv文件为二进制文件,且没有官方文档或解析器,本项目无法保证与deepvocal完美兼容,如遇到文件解析错误欢迎在issue中提出。
## 安装
> pip install dvfile
## 功能
### dv文件
- 解析与保存dv文件
目前可以解析的内容:- 曲速标记:位置、曲速
- 节拍标记:位置、每小节拍数、音符分数
- 音轨属性:音轨名、音轨音量、独奏、静音、双声道平衡
- 区段属性:区段名、区段音源名、起点、长度
- 音符属性:起点、长度、音高、歌词汉字、歌词拼音、滑音(弯曲深度、弯曲长度、头部滑音长度、尾部滑音长度)、颤音(颤音长度、颤音幅度、颤音速度、渲染出的颤音曲线)
- 伴奏音轨:音轨名、音轨音量、独奏、静音、文件名、起点
- 区段参数:音量、音调、气声、声线目前不能解析的内容(保存时将还原默认值):
- 音符属性:音素
- 导入、导出ust、nn文件(需要[utaufile](https://gitee.com/oxygendioxide/utaufile))
- 导入、导出mid文件(需要[mido](https://mido.readthedocs.io/en/latest/index.html))
- 导入、导出music21对象(需要[music21](http://web.mit.edu/music21/doc/index.html)、[utaufile](https://gitee.com/oxygendioxide/utaufile))
- 导出五线谱(需要[music21](http://web.mit.edu/music21/doc/index.html)、[utaufile](https://gitee.com/oxygendioxide/utaufile)和[musescore](http://musescore.org)(独立软件))
- 批量获取歌词
- 量化(将音符对齐到节拍线)
- 移调(音符与pit批量上下移动)
- 自动修复工程(删除区段两端的无效音符和无效参数,音符按开始时间排序,修复音符重叠)## 示例
```py
import dvfile as df#打开dv文件
d=df.opendv("myproject.dv")#导出mid文件(需要mido)
d.to_midi_file().save("myproject.mid")#每个音轨单独导出ust文件
for (i,t) in enumerate(d.track):
t.to_ust_file().save('myproject{}.ust'.format(i))#每个音轨单独导出nn文件(需要utaufile)
for (i,t) in enumerate(d.track):
t.to_nn_file().save('myproject{}.nn'.format(i))#导出五线谱(需要music21和musescore)
d.to_music21_score().show()#获取第0音轨第0区段的歌词(拼音与汉字)列表
tr=d.track[0]
seg=tr.segment[0]
pinyin=seg.getlyric()
hanzi=seg.getlyric(use_hanzi=True)#将第0音轨的所有区段合并
tr.segment=[sum(tr.segment)]#工程整体降低3key
d.transpose(-3)#保存dv文件
d.save("myproject2.dv")#打开dvtb文件
dt=df.opendvtb("myvoicebank.dvtb")
```## 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request## 相关链接
[deepvocal官网](https://www.deep-vocal.com/)
[sharpkey(deepvocal前身)视频教程](https://www.bilibili.com/video/BV1Us411r7u5)
[deepvocal toolbox 文档](https://share.weiyun.com/5snXMol)