-
Install ffmpeg
-
Donwload Pretrain Models.
2.1 Downlaod Vocal Separation model UVR5.
-
ASR model, VAD model, Punctuation model will be downloaded automatically.
- Create independent Python Environment.
conda create -n asr_toolkit python=3.9 conda activate asr_toolkit
- Clone the repo
git clone git@github.com:Jeru2023/asr_toolkit.git
- Install packages
install -r requirements.txt
- Place the downloaded UVR5 weights folder(uvr5_weights) under "models" directory.
可以在executor.py的顶部修改input/output folder的常量,也可以在调用executor的方法时传入参数。
默认情况下,视频文件的路径为'data', 最终文字的输出路径为'output/texts', 输出文件的文件名会与原始文件名保持一致,方便匹配。
from executor import Executor
executor = Executor()
executor.convert_videos()
# 如何不需要人声分离可以注释下一行代码
executor.separate_vocals()
executor.asr()
人声伴奏分离批量处理, 使用UVR5模型。
目前代码中默认使用的是H2模型, 人声抽取激进度为15.
模型分为三类:
- (1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;
- (234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底,DeReverb额外去除混响,可去除单声道混响,但是对高频重的板式混响去不干净。
附:
- DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍;
- MDX-Net-Dereverb模型挺慢的;
- 个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。
系统会自动获取device信息决定是否启用GPU加速和半精度。
代码在CPU上也可以运行,ASR可以调整decoder-thread-num,io-thread-num来最大化利用CPU算力。
用Macbook Pro测试批处理两个视频,一个3分钟,一个2分15秒,总耗时29秒,其中28秒是ASR消耗。
用RTX4090运行同样的视频,处理时间14秒,提升一倍。
人声分离功能已集成,这也是个比较耗时的操作,正在尝试快速检测是否需要人声分离。
音频分为五类:
首先检测人声占比,排除掉纯音乐。然后检测音频中是否包含音乐/唱歌,不包含的话直接转文字,如果包含则抽样10s做人声分离,检查前景中的人声是否符合正常说话标准。 人声声谱特征:
1. 基于基音频率检测:人声具有明显的基音频率特征,通常在80-300Hz区间。通过检测这个区间内能量峰值,可以判断是否存在人声。
2. 基于共振峰检测:人声由于发声器官的共振作用,在一些特定频率会形成能量峰值,如小于1kHz的共振峰。检测这些共振峰可以判断人声存在。
3. 基于频谱包络分析:人声频谱包络通常呈现出周期性的峰谷结构,可通过分析包络性质来检测人声。
4. 基于频谱统计特征:计算诸如频谱平坦度、频谱熵、频谱扩展等统计量,人声和其它声源在这些特征上存在差异。
背景音乐声谱特征:
- 和声频率分布: 背景音乐通常是多个乐器合奏,频谱上会有多个谐波成分和多个并行的共振峰,形成宽频带的和声频率分布。而人声的频谱分布相对较窄。
- 基音频率范围: 乐器的基音频率范围较宽,如钢琴基音从27.5Hz到4186Hz。而人声基音通常在80-300Hz的相对窄范围内。
- 共振峰位置: 人声的共振峰位置由发声器官决定,如声门峰在500Hz左右。而乐器共振峰则取决于乐器腔体等结构。
- 能量分布平稳性: 背景音乐各频带能量分布相对平稳,变化缓慢;而人声由于发声机理的脉冲特性,能量在时域和频域上都会有较大波动。
- 谱线特征: 人声谱线比较集中,而背景音乐由于多种乐器混合,谱线往往较为分散、杂乱。
- 振幅调制: 乐器音色的振幅调制速率较慢;而人声的振幅调制受发声方式的影响,变化较快。
- 谱线间隔: 乐器频谱中,不同谱线间的频率间隔服从一定规律,如钢琴八度频率比为2:1;而人声频谱间隔较为随机。
- [*] 人声分离(H) - 修复bug
- Auto Detection(M) - 自动判断是否应该做人声分离,考虑人声和音乐/唱歌并存时对比效果
- multilingual(L) - 新增ARS英文模型
- [*] 声纹识别(L) - 多人对话时区分角色
- [*] audio detector(H) - 过滤掉无效音频内容(人声判断,人声分离抽样)
- 加挂热词字典
- 提供两种模式分别支持社媒音频和访谈音频
- 集成分类模型,根据标题,内容,hashtag进一步过滤
- 转文字后的纠正模式 - 规则纠正/模型纠正