根据 ASS 文件将多种类的音频文件切片为指定格式的文件,并生成对应的 .lab 文件
Project description
VoiceS
根据 ASS 文件将多种类的音频文件切片为指定格式的文件,并生成对应的 .lab 文件
功能与计划
功能
- 导出多音字列表
- 交互式多音字修复
- 交互式中根据输入历史自动选择高可能性的发音
- 交互式中根据输入历史高亮可能性较复杂的字
- 联机获取词库
tracker.json
- 整合mfa?
输入文件类型
- ass(aegisub)
- 其他的类型?(欢迎提交issue或pr)
使用方法
配置运行环境
本脚本所需的基本运行环境与 教程 中的 diff
环境一致(交互式多音字修复需要额外依赖,详见下文),可直接共用环境。
如果你需要直接配置环境可以参考以下命令:
conda create -n diff python=3.8
conda activate diff
pip install librosa pypinyin # 必装依赖
pip install pyaudio noneprompt # 选装依赖
下载时间轴工具
下载 AgeiSub 或其他能够根据音频生成 .ass
文件的时间轴工具
打轴
导入音频文件并生成对应的时间轴,可参考 https://www.bilibili.com/video/BV19F411w7m5
注意:
- 生成的时间轴中每行将会被视为一个“切片”,切片的长度应在 5-15s 为宜,不得超过 2-20s
- 歌词中不应出现任何标点符号,可以出现空格,也可提前将多音字替换为拼音
生成原始数据
注意:若时间轴中某一切片超过 2-20s 的范围,将会报错并跳过整个文件,但不会影响到其他文件的处理。
使用命令行运行(默认)
将 .ass
文件和 同名 的音频文件放置于同一文件夹或其子文件夹下。cd 到 main.py
同目录下后输入 python ./main.py <src> <des>
命令,程序将会从 src
文件夹读取文件,处理后输出到 des
文件夹。
例如,数据文件放置于 /home/admin/src file
,输出文件放置于 /home/admin/desfile
,那么对应的命令为:
python ./main.py "/home/admin/src file" /home/admin/des
直接运行
将 .ass
文件和 同名 的音频文件放置于 data
文件夹或其子文件夹下。cd 到 data
文件夹的根目录后运行 main.py
(需将其中第一行的True
替换为False
),程序将会从 data
文件夹读取文件,处理后输出输出到 data/output
文件夹下
修正原始数据
在输出目录下(也就是 des
或 data/output
)会生成 exception.json
文件,其中记录了包含多音字的切片。此时可以根据此文件对 .lab
文件进行修正。(当然你也可以头铁直接拿去mfa,此时生成的文件格式上是没有错误的)
交互式多音字修复
在程序启动时会询问 是否开启 **交互式** 多音字检查
如果你按照提示开启了该功能,在程序遇到多音字时会记录并在终端开启一个 CLI 来辅助你动态的更改多音字的发音。此功能需要额外的依赖 noneprompt
。
如果你使用的设备也带有音频播放功能,可在询问 是否在 **交互式** 多音字检查中开启音频播放
时开启该功能。此功能需要额外的依赖 pyaudio
。
如果你在交互式修复过程中未对 全部 多音字进行修复,在 exception.json
中也会记录未修复的部分。
校对建议
在 当前工作路径 中会自动生成 tracker.json
文件,也可手动导入此文件(注意读写权限),在使用过程中会根据 文件中的记录 和 本次操作记录 将多音字划分为四个等级。
- ⚪: 数据量小于5, 无法形成有效提示
- 🟢: 当前选项占记录中可能性的 97% 以上
- 🟡: 当前选项占记录中可能性的 97% 以下
- 🔴: 当前选项中,本次操作记录 与 文件中的记录 中最大可能性的选项不一致
同时,系统也会对多音字列表按照可能性进行排序,默认选中可能性最高的选项。本次操作记录 的优先级要高于 文件中的记录,如果二者在排序中 有冲突 的话会采用 本次操作记录 并标记为 🔴
当然,这套系统本质上依然是 if else
,并不能真正的“识别”此处的发音,因此即便是 🟢
也建议不要直接跳过
由于 tracker.json
需要大量的积累才能更加准确,因此也再此呼吁使用该项目的用户分享出来自己的 tracker.json
,详情可见 issue区置顶
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.