Paraformer和SenseVoice模型训练

0.数据准备

如果是训练paraformer模型,我们只需要准备train_wav.scp和train_text.txt以及验证集val_wav.scp和val_text.txt即可。

如果是训练SenseVoice模型,我们需要准备下面几个文件:

train_text.txt
train_wav.scp
train_text_language.txt
train_emo.txt
train_event.txt

其中必须的是train_wav.scp和train_text.txt文件。

下面是每个文件的格式要求:

BAC009S0764W0121 甚至出现交易几乎停滞的情况
BAC009S0916W0489 湖北一公司以员工名义贷款数十员工负债千万
asr_example_cn_en 所有只要处理 data 不管你是做 machine learning 做 deep learning 做 data analytics 做 data science 也好 scientist 也好通通都要都做的基本功啊那 again 先先对有一些 > 也许对
ID0012W0014 he tried to think how it could be

注意:如果是中英混杂的句子,中文和英文之间要有空格。

BAC009S0764W0121 /root/train/data/BAC009S0764W0121.wav
BAC009S0916W0489 /root/train/data/BAC009S0916W0489.wav
asr_example_cn_en /root/train/data/asr_example_cn_en.wav
ID0012W0014 /root/train/data/ID0012W0014.wav

注意:音频路径不能使用URL路径,使用URL路径会导致生成的jsonl文件没有内容。

BAC009S0764W0121 <|zh|>
BAC009S0916W0489 <|zh|>
asr_example_cn_en <|zh|>
ID0012W0014 <|en|>
BAC009S0764W0121 <|NEUTRAL|>
BAC009S0916W0489 <|NEUTRAL|>
asr_example_cn_en <|NEUTRAL|>
ID0012W0014 <|NEUTRAL|>
BAC009S0764W0121 <|Speech|>
BAC009S0916W0489 <|Speech|>
asr_example_cn_en <|Speech|>
ID0012W0014 <|Speech|>

下面生成jsonl文件时需要注意,如果你只准备了train_wav.scp和train_text.txt文件,那么执行下面这样的命令。

# generate train.jsonl and val.jsonl from wav.scp and text.txt
sensevoice2jsonl \
++scp_file_list='["../../../data/list/train_wav.scp", "../../../data/list/train_text.txt"]' \
++data_type_list='["source", "target"]' \
++jsonl_file_out="../../../data/list/train.jsonl" \
++model_dir='iic/SenseVoiceSmall'

注意:SenseVoice会自动打标。

如果是准备了全部文件,那么执行下面命令。

# generate train.jsonl and val.jsonl from wav.scp, text.txt, text_language.txt, emo_target.txt, event_target.txt
sensevoice2jsonl \
++scp_file_list='["../../../data/list/train_wav.scp", "../../../data/list/train_text.txt", "../../../data/list/train_text_language.txt", "../../../data/list/train_emo.txt", "../../../data/list/train_event.txt"]' \
++data_type_list='["source", "target", "text_language", "emo_target", "event_target"]' \
++jsonl_file_out="../../../data/list/train.jsonl"

生成的jsonl文件会保存到上面指定的路径下。我们训练之前最好检查一下生成的jsonl文件是否对。

1.训练

现在我们可以开始训练了,首先是检查finetune.sh脚本中的参数看看对不对,如显卡索引对不对,默认是使用了两张显卡,如果你只有一张,那么就需要修改,如果你是两张,那么可以不用修改直接运行这个脚本。

训练中的loss曲线可通过tensorboard来查看,下面是我使用了300多条专业名词数据集做的微调训练的loss曲线。

可以看到这个训练是有效果的,如果这个loss曲线是上升的,说明这个模型训练的参数设置的不对或者训练的数据集不干净,比如音频或文本没有对应上,或者音频采样率过低,比如8k。训练这个模型,我们推荐使用的音频采样率是大于等于16k。

训练的时候我们执行bash finetune.sh就可以了。

如果想要查看tensorboard曲线,需要先安装这个tensorboard依赖,如果你使用的是autodl平台训练的,那么可以执行下面命令先把默认启动的tensorboard结束掉,然后重新执行,并且指定端口和路径。

ps -ef | grep tensorboard | awk '{print $2}' | xargs kill -9
nohup tensorboard --port 6007 --logdir /path/to/your/tf-logs/direction > tensorboard.log 2>&1 &

3. 其它

更多内容可以访问我的博客,点击这里跳转

### Paraformer语音识别模型介绍 Paraformer是一种高识别率、高计算效率的单轮非自回归端到端语音识别模型[^1]。这种模型设计旨在解决传统多轮解码器带来的延迟问题,通过一次性预测整个序列来提高推理速度降低计算成本。 #### 主要特点 - **高效性**:相比传统的基于Transformer架构下的自回归模型Paraformer减少了逐词生成的时间消耗。 - **准确性**:保持甚至提升了对于不同口音以及复杂环境下的鲁棒性精确度。 - **灵活性**:支持多种应用场景,无论是在线还是离线部署都能良好适应。 ### 使用方法 为了在本地环境中运行Paraformer模型,在Ubuntu操作系统上可以按照如下方式操作: #### 准备工作 首次使用前需完成镜像拉取与服务初始化两步操作[^2]。具体来说就是获取预构建好的Docker容器并启动必要的后台进程以准备就绪状态等待接收输入数据。 #### 执行命令 以下是用于启动所需组件的具体Shell指令: ```bash docker pull registry.cn-hangzhou.aliyuncs.com/modelscope/paraformer:latest docker run --name paraformer -p 8097:8097 -itd registry.cn-hangzhou.aliyuncs.com/modelscope/paraformer:latest /bin/bash cd /root/inference && bash start.sh ``` #### 调用API接口 当一切设置完毕之后就可以调用相应的Web API来进行实际的任务处理了。例如利用Python脚本发送HTTP请求给服务器从而实现音频转文字的功能[^3]: ```python import requests url = "http://localhost:8097/api/predict" files = {"audio": open('example.wav', 'rb')} response = requests.post(url, files=files) print(response.json()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值