Skip to content

Latest commit

 

History

History
233 lines (157 loc) · 7.16 KB

README_zh.md

File metadata and controls

233 lines (157 loc) · 7.16 KB

SubFix

SubFix是一个用于轻松地编辑修改音频字幕的网页工具。能够实时地看到改动,方便地对音频进行合并、分割、删除、编辑字幕

SubFix同时也支持自动化语音标注,使用modelscopewhisper对文本进行多语言标注。目前modelscope支持中文、英语、日语、德语、德语、俄语的自动化标注。whisper支持几乎所有语言。

English Version

独立的.py文件版本,可以通过subfix_webui.py获取。该版本可以通过命令行参数来选择语言,支持英文和中文。同时可以选择在编辑时是否同步删除硬盘上的音频文件。

单独Python文件版本的使用方法,可访问:subfix_webui.py 帮助

安装

进行如下安装步骤可以快速而轻松的安装。建议使用Linux环境。如果是Windows环境,需要您手动配置ffmpeg环境变量,并且modelscope的安装可能比较复杂。

安装依赖

确认安装的Python版本最好大于3.9,然后执行如下命令。如果您不需要使用音频的自动标注,那么不需要安装Modelscope模块。

使用conda

conda create -n modelscope python=3.9
conda activate modelscope

安装依赖

Linux环境

sudo apt install build-essential
sudo apt install ffmpeg
sudo apt install libsox-dev

git clone https://github.com/cronrpc/SubFix.git
cd SubFix
pip install "modelscope[audio_asr]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
pip install -e .

更新modelscope和FunASR到最新版本

由于modelscope的API发生了改动,通过pip安装的代码未必是最新版本,可能存在无法运行自动标注的情况。

这里建议是,可以直接安装最新Github仓库的modelscope和funASR到最新版本。

# 安装FunASR
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./

# 安装modelscope
git clone https://github.com/modelscope/modelscope.git
cd modelscope
pip install -e .
pip install -e .[audio_asr]

Windows环境

如果有gpu,需要提前安装pytorchcuda版本,配置ffmpeg等环境变量,之后执行下列命令

git clone https://github.com/cronrpc/SubFix.git
cd SubFix
pip install "modelscope[audio_asr]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
pip install -e .

关于pytorch安装,请访问(https://pytorch.org/get-started/locally/)

使用指南

当你使用pip install -e .安装后,在shell下可以通过该命令在任意目录下启动本工具。所有参数都有默认值,如果是默认值的话,不需要输入任何--option

subfix -h

# webui
subfix webui -h
subfix webui --load_list demo.list --webui_language zh --force_delete True
# create dataset
subfix create modelscope -h
# 英语
subfix create modelscope --source_dir origin --language EN
# 中文
subfix create modelscope --source_dir origin --language ZH
# 日语
subfix create modelscope --source_dir origin --language JA
# Openai-Whisper标注 (几乎支持所有语言)
subfix create whisper --source_dir origin --language ZH
subfix create whisper --source_dir origin --language JA
# 说话人确认 (分离不同说话人)
subfix diarization -h
subfix diarization --source_dir origin --target_dir diarization --min_seconds 3.0

每次使用自动标注前,建议清空一下cache/subfix/文件夹

rm -rf cache/subfix

启动SubFix查看数据集

SubFix支持2种格式,分别是.json.list格式。

.list的格式中,每行数据类似于"{wav_path}|{speaker_name}|{language}|{text}"

例如,如果你已经有了一个demo.list文件,和它对应的音频已经放到了正确的路径,那么可以执行如下命令来启动SubFix的UI界面:

subfix webui --load_list demo.list
# or
subfix webui --load_json demo.json

查看帮助

subfix --help
subfix webui --help

快速查看和听取音频

可以点击Previous IndexNext Index按钮来切换列表,同时可以拖动slider并点击Change Index来快速定位列表。

change index gif

修改文本

可以直接修改文本,并点击Submit Text按钮来保存修改。

change text gif

合并

选择需要合并的音频,设置合并间隔,然后点击合并按钮来合并音频。

merge audio gif

分割音频

选择需要分割的音频,设置分割点,然后点击分割按钮来进行分割。注意,一次只能分割一个音频,分割后需要重新调整下文本。

split audio gif

删除

选择需要删除的音频,点击按钮进行删除。删除操作将暂存到内存之中,如果需要保存到文件中,需要点击保存按钮,或者执行一次其他命令来保存。

delete audio gif

自动标注音频和创建数据集

默认情况下,将音频文件放入origin文件夹下,对于一个sam音频文件abc.wav,其所在的文件路径可以是./origin/sam/abc.wav这样的结构,之后执行下面的命令:

# rm -rf cache/subfix
subfix create --source_dir origin --output demo.list

该命令将创建一个dataset目录,同时将所有文件转录的音频的路径和字幕存储到了demo.list文件中。

给list文件添加标点符号

如果要用标点符号,使用下面的命令,自动对list文件中的文本添加标点符号。

subfix punctuation --load_list demo.list

说话人识别、聚类

在某些情况下,大段落音频中由于存在背景音乐,会将背景歌曲的人声或噪音识别,造成同一文件中的多人说话。

又或者,说话太过密集,导致识别出来的音频过长。

该功能将提取出每个文件中出现次数最多的n个说话人,说话人的每句话之间间隔interval秒,保存在diarization文件夹中,便于后续提取音频。

subfix diarization --source_dir origin --target_dir diarization --min_seconds 3.0 --interval 10 --top_of_number 1
subfix create modelscope --source_dir diarization --language ZH

格式转换

两种格式.list.json可以互相转换,使用如下命令对文件进行转换:

subfix format_convert --source demo.list --target demo.json
subfix format_convert --source demo.json --target demo.list

subfix_webui.py

单独Python文件版本的使用方法:

查看帮助

python subfix_webui.py -h

中文启动

python subfix_webui.py --webui_language zh --load_list demo.list

指定.list文件

python subfix_webui.py --load_list demo.list

同步删除磁盘文件,默认值是True。

python subfix_webui.py --force_delete True
# or
python subfix_webui.py --force_delete False

指定端口启动

python subfix_webui.py --server_port 1234

References