| | |
| | | (简体中文|[English](./README.md)) |
| | | |
| | | FunASR开源了大量在工业数据上预训练模型,您可以在[模型许可协议](../../MODEL_LICENSE)下自由使用、复制、修改和分享FunASR模型,下面列举代表性的模型,更多模型请参考 [模型仓库](../../model_zoo)。 |
| | | FunASR开源了大量在工业数据上预训练模型,您可以在 [模型许可协议](https://github.com/alibaba-damo-academy/FunASR/blob/main/MODEL_LICENSE)下自由使用、复制、修改和分享FunASR模型,下面列举代表性的模型,更多模型请参考 [模型仓库](https://github.com/alibaba-damo-academy/FunASR/tree/main/model_zoo)。 |
| | | |
| | | |
| | | ## 推理 |
| | |
| | | ```python |
| | | from funasr import AutoModel |
| | | |
| | | model = AutoModel(model="/Users/zhifu/Downloads/modelscope_models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch") |
| | | model = AutoModel(model="paraformer-zh") |
| | | |
| | | res = model.generate(input="/Users/zhifu/Downloads/modelscope_models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/example/asr_example.wav") |
| | | res = model.generate(input="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/vad_example.wav") |
| | | print(res) |
| | | ``` |
| | | |
| | | ### 详细用法介绍 |
| | | |
| | | #### AutoModel 定义 |
| | | ```python |
| | | model = AutoModel(model=[str], device=[str], ncpu=[int], output_dir=[str], batch_size=[int], **kwargs) |
| | | ``` |
| | | #### AutoModel 定义 |
| | | - `model`(str): [模型仓库](https://alibaba-damo-academy.github.io/FunASR/en/model_zoo/modelscope_models.html#pretrained-models-on-modelscope) 中的模型名称,或本地磁盘中的模型路径 |
| | | - `model`(str): [模型仓库](https://github.com/alibaba-damo-academy/FunASR/tree/main/model_zoo) 中的模型名称,或本地磁盘中的模型路径 |
| | | - `device`(str): `cuda:0`(默认gpu0),使用 GPU 进行推理,指定。如果为`cpu`,则使用 CPU 进行推理 |
| | | - `ncpu`(int): `4` (默认),设置用于 CPU 内部操作并行性的线程数 |
| | | - `output_dir`(str): `None` (默认),如果设置,输出结果的输出路径 |
| | | - `batch_size`(int): `1` (默认),解码时的批处理大小 |
| | | - `**kwargs`(dict): 所有在`config.yaml`中参数,均可以直接在此处指定,例如,vad模型中最大切割长度 `max_single_segment_time=6000` (毫秒)。 |
| | | |
| | | #### AutoModel 推理 |
| | | ```python |
| | | res = model.generate(input=[str], output_dir=[str]) |
| | |
| | | bash finetune.sh |
| | | # "log_file: ./outputs/log.txt" |
| | | ``` |
| | | 详细完整的脚本参考 [finetune.sh](../../examples/industrial_data_pretraining/paraformer/finetune.sh) |
| | | 详细完整的脚本参考 [finetune.sh](https://github.com/alibaba-damo-academy/FunASR/blob/main/examples/industrial_data_pretraining/paraformer/finetune.sh) |
| | | |
| | | ### 详细参数介绍 |
| | | |
| | |
| | | ++train_conf.validate_interval=2000 \ |
| | | ++train_conf.save_checkpoint_interval=2000 \ |
| | | ++train_conf.keep_nbest_models=20 \ |
| | | ++train_conf.avg_nbest_model=5 \ |
| | | ++optim_conf.lr=0.0002 \ |
| | | ++output_dir="${output_dir}" &> ${log_file} |
| | | ``` |
| | | |
| | | - `model`(str):模型名字(模型仓库中的ID),此时脚本会自动下载模型到本读;或者本地已经下载好的模型路径。 |
| | | - `model_revision`(str):当 `model` 为模型名字时,下载指定版本的模型。 |
| | | - `train_data_set_list`(str):训练数据路径,默认为jsonl格式,具体参考([例子](../../data/list))。 |
| | | - `valid_data_set_list`(str):验证数据路径,默认为jsonl格式,具体参考([例子](../../data/list))。 |
| | | - `train_data_set_list`(str):训练数据路径,默认为jsonl格式,具体参考([例子](https://github.com/alibaba-damo-academy/FunASR/blob/main/data/list))。 |
| | | - `valid_data_set_list`(str):验证数据路径,默认为jsonl格式,具体参考([例子](https://github.com/alibaba-damo-academy/FunASR/blob/main/data/list))。 |
| | | - `dataset_conf.batch_type`(str):`example`(默认),batch的类型。`example`表示按照固定数目batch_size个样本组batch;`length` or `token` 表示动态组batch,batch总长度或者token数为batch_size。 |
| | | - `dataset_conf.batch_size`(int):与 `batch_type` 搭配使用,当 `batch_type=example` 时,表示样本个数;当 `batch_type=length` 时,表示样本中长度,单位为fbank帧数(1帧10ms)或者文字token个数。 |
| | | - `train_conf.max_epoch`(int):训练总epoch数。 |
| | |
| | | - `train_conf.validate_interval`(int):训练中做验证测试的间隔step数。 |
| | | - `train_conf.save_checkpoint_interval`(int):训练中模型保存间隔step数。 |
| | | - `train_conf.keep_nbest_models`(int):保留最大多少个模型参数,按照验证集acc排序,从高到底保留。 |
| | | - `train_conf.avg_nbest_model`(int):对acc最高的n个模型取平均。 |
| | | - `optim_conf.lr`(float):学习率。 |
| | | - `output_dir`(str):模型保存路径。 |
| | | - `**kwargs`(dict): 所有在`config.yaml`中参数,均可以直接在此处指定,例如,过滤20s以上长音频:`dataset_conf.max_token_length=2000`,单位为音频fbank帧数(1帧10ms)或者文字token个数。 |
| | |
| | | |
| | | #### 准备数据 |
| | | |
| | | `jsonl`格式可以参考([例子](https://github.com/alibaba-damo-academy/FunASR/blob/main/data/list))。 |
| | | 可以用指令 `scp2jsonl` 从wav.scp与text.txt生成。wav.scp与text.txt准备过程如下: |
| | | |
| | | `train_text.txt` |
| | | |
| | | 左边为数据唯一ID,需与`train_wav.scp`中的`ID`一一对应 |
| | |
| | | ID0012W0015 https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_cn_en.wav |
| | | ``` |
| | | |
| | | `生成指令` |
| | | |
| | | ```shell |
| | | # generate train.jsonl and val.jsonl from wav.scp and text.txt |
| | | scp2jsonl \ |
| | | ++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" |
| | | ``` |
| | | |
| | | (可选,非必需)如果需要从jsonl解析成wav.scp与text.txt,可以使用指令: |
| | | |
| | | ```shell |
| | | # generate wav.scp and text.txt from train.jsonl and val.jsonl |
| | | jsonl2scp \ |
| | | ++scp_file_list='["../../../data/list/train_wav.scp", "../../../data/list/train_text.txt"]' \ |
| | | ++data_type_list='["source", "target"]' \ |
| | | ++jsonl_file_in="../../../data/list/train.jsonl" |
| | | ``` |
| | | |
| | | #### 查看训练日志 |
| | | |