| | |
| | | |
| | | 本文档为FunASR离线文件转写服务开发指南。如果您想快速体验离线文件转写服务,可参考[快速上手](#快速上手)。 |
| | | |
| | | ## 服务器配置 |
| | | |
| | | 用户可以根据自己的业务需求,选择合适的服务器配置,推荐配置为: |
| | | - 配置1: (X86,计算型),4核vCPU,内存8G,单机可以支持大约32路的请求 |
| | | - 配置2: (X86,计算型),16核vCPU,内存32G,单机可以支持大约64路的请求 |
| | | - 配置3: (X86,计算型),64核vCPU,内存128G,单机可以支持大约200路的请求 |
| | | |
| | | 详细性能测试报告([点击此处](./benchmark_onnx_cpp.md)) |
| | | |
| | | 云服务厂商,针对新用户,有3个月免费试用活动,申请教程([点击此处](https://github.com/alibaba-damo-academy/FunASR/blob/main/funasr/runtime/docs/aliyun_server_tutorial.md)) |
| | | |
| | | |
| | | ## 快速上手 |
| | | ### 镜像启动 |
| | | |
| | | 通过下述命令拉取并启动FunASR runtime-SDK的docker镜像: |
| | | |
| | | ```shell |
| | | sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.1.0 |
| | | sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.2.1 |
| | | |
| | | sudo docker run -p 10095:10095 -it --privileged=true -v /root:/workspace/models registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.1.0 |
| | | sudo docker run -p 10095:10095 -it --privileged=true -v /root:/workspace/models registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.2.1 |
| | | ``` |
| | | 如果您没有安装docker,可参考[Docker安装](#Docker安装) |
| | | |
| | |
| | | --keyfile ssl的密钥文件,默认为:../../../ssl_key/server.key,如果需要关闭ssl,参数设置为”“ |
| | | ``` |
| | | |
| | | ## 模型资源准备 |
| | | 执行上述指令后,启动离线文件转写服务。如果模型指定为ModelScope中model id,会自动从MoldeScope中下载如下模型: |
| | | [FSMN-VAD模型](https://www.modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx/summary), |
| | | [Paraformer-lagre模型](https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx/summary) |
| | | [CT-Transformer标点预测模型](https://www.modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx/summary) |
| | | |
| | | 如果您选择通过funasr-wss-server从Modelscope下载模型,可以跳过本步骤。 |
| | | |
| | | FunASR离线文件转写服务中的vad、asr和punc模型资源均来自Modelscope,模型地址详见下表: |
| | | |
| | | | 模型 | Modelscope链接 | |
| | | |------|---------------------------------------------------------------------------------------------------------------| |
| | | | VAD | https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx/summary | |
| | | | ASR | https://www.modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx/summary | |
| | | | PUNC | https://www.modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx/summary | |
| | | |
| | | 离线文件转写服务中部署的是量化后的ONNX模型,下面介绍下如何导出ONNX模型及其量化:您可以选择从Modelscope导出ONNX模型、从finetune后的资源导出模型: |
| | | |
| | | ### 从Modelscope导出ONNX模型 |
| | | |
| | | 从Modelscope网站下载对应model name的模型,然后导出量化后的ONNX模型: |
| | | |
| | | ```shell |
| | | python -m funasr.export.export_model \ |
| | | --export-dir ./export \ |
| | | --type onnx \ |
| | | --quantize True \ |
| | | --model-name damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch \ |
| | | --model-name damo/speech_fsmn_vad_zh-cn-16k-common-pytorch \ |
| | | --model-name damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch |
| | | ``` |
| | | |
| | | 命令参数介绍: |
| | | ```text |
| | | --model-name Modelscope上的模型名称,例如damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch |
| | | --export-dir ONNX模型导出地址 |
| | | --type 模型类型,目前支持 ONNX、torch |
| | | --quantize int8模型量化 |
| | | ``` |
| | | ### 从finetune后的资源导出模型 |
| | | |
| | | 假如您想部署finetune后的模型,可以参考如下步骤: |
| | | |
| | | 将您finetune后需要部署的模型(例如10epoch.pb),重命名为model.pb,并将原modelscope中模型model.pb替换掉,假如替换后的模型路径为/path/to/finetune/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch,通过下述命令把finetune后的模型转成onnx模型: |
| | | |
| | | ```shell |
| | | python -m funasr.export.export_model --model-name /path/to/finetune/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch --export-dir ./export --type onnx --quantize True |
| | | ``` |
| | | |
| | | 如果,您希望部署您finetune后的模型(例如10epoch.pb),需要手动将模型重命名为model.pb,并将原modelscope中模型model.pb替换掉,将路径指定为`model_dir`即可。 |
| | | |
| | | |
| | | ## 如何定制服务部署 |
| | |
| | | |
| | | ### 自定义客户端: |
| | | |
| | | 如果您想定义自己的client,websocket通信协议为: |
| | | 如果您想定义自己的client,参考[websocket通信协议](./websocket_protocol_zh.md) |
| | | |
| | | ```text |
| | | # 首次通信 |
| | | {"mode": "offline", "wav_name": wav_name, "is_speaking": True} |
| | | # 发送wav数据 |
| | | bytes数据 |
| | | # 发送结束标志 |
| | | {"is_speaking": False} |
| | | |
| | | ``` |
| | | |
| | | ### c++ 服务端: |