当前位置:AIGC资讯 > AIGC > 正文

AIGC实践——asr识别FunASR手把手部署流程

💡
大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。

FunASR是什么?

FunASR 是一个基本的语音识别工具包,提供多种功能,包括语音识别 (ASR)、语音活动检测 (VAD)、标点符号恢复、语言模型、说话人验证、说话人分类和多说话者 ASR。 FunASR提供方便的脚本和教程,支持预训练模型的推理和微调。

它由阿里达摩研究院推出的语音提取工具包,现在这个工具包还在被开发中,但是现在它能实现的功能已经很强大,当然如果你有更好的想法和点子,也可以加入FunASR的开发。我对于FunASR还是很佩服的,虽说其相对于openai旗下whisper性能上还是存在某些方面的差距的,但是FunASR跟适合中国宝宝体质,FunASR的标点符号更加精确,对于普通话来说有着能给人更好的体验。

无论您是初学者还是经验丰富的专业人士,FunASR都是一个值得一试的平台。它不仅为您提供了学习语音识别所需的工具和资源,更重要的是,它为学习者带来了乐趣和激励,让语音识别的学习之旅变得愉悦而充实。

如果您对语音识别技术充满兴趣,并且希望以一种全新的方式来探索和学习它,那么不妨加入FunASR的行列,一起开启这段富有乐趣的学习之旅吧!

github项目地址

官网地址

今天就利用这个开源项目,跑一下他们的识别能力。后续的训练、调优都是基于这一步。

注:服务器环境搭建可以参考我之前的文章《Ubuntu技巧-Ubuntu远程访问之SSH反向代理》

服务端部署

下载服务docker
docker pull \

registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.10

```

不知道docker怎么安装使用的,可以参考我以前的文章。

创建项目模型文件夹

mkdir -p ./funasr-runtime-resources/models

运行并进入docker容器里面
注意:-p是端口的映射关系,3005是本机对外的端口,10095是容器的端口

docker run -p 3005:10095 -it --privileged=true \

-v $PWD/funasr-runtime-resources/models:/workspace/models
registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.10

```
在容器内运行服务
cd FunASR/runtime &&

nohup bash run_server_2pass.sh
–download-model-dir /workspace/models
–vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx
–model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx
–online-model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx
–punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx
–lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst
–itn-dir thuduj12/fst_itn_zh
–certfile 0
–hotword /workspace/models/hotwords.txt > log.txt 2>&1 &

```


查看运行日志:tail -f FunASR/runtime/log.txt

当看到Listen in 10095就表明服务运行正常。

关闭服务(这个后续要用到)
ps -x | grep funasr-wss-server-2pass

kill -9 PID

```

Demo验证

在自己电脑上下载demo
wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/funasr_samples.tar.gz

解压之后,根据自己需求选择Python或者HTML测试代码,我这里使用HTML

进入HTML文件夹cd samples/http
打开页面:samples/html/static/index.html

设置服务器地址,并连接

如果没什么意外的话,就连接成功,就可以开始讲话了

测试结果

整体来看,使用官方预训练的模型,识别也挺准的,速度也不错。

错误处理

在启动服务时候,有wss连接失败,在容器中日志打印

I20240828 14:39:12.509810  1198 websocket-server-2pass.cpp:29] on_tls_init called with hdl: 0x7ced34018300
I20240828 14:39:12.509902  1198 websocket-server-2pass.cpp:30] using TLS mode: Mozilla Intermediate
[2024-08-28 14:39:12] [error] handle_transport_init received error: TLS handshake failed
[2024-08-28 14:39:12] [info] asio async_shutdown error: asio.ssl:336462231 (shutdown while in init (SSL routines, SSL_shutdown))

这是连接ssl错误,此时在启动参数加--certfile 0,再重新启动即可。

后记

按照上面的流程,我们跑通过了FunASR的实时语音听写服务,除此之外,还可以使用离线文件转写,在damo下面还有许多模式可以试。


最重要的,该项目还提供了训练脚本,这就基本可以商用,感兴趣的可以做起来,有什么问题欢迎留言讨论。

总结

## 文章总结:《探索FunASR:一款强大的中文语音识别工具包》
### FunASR概览
- **简介**:FunASR是由阿里达摩研究院推出的语音识别(ASR)工具包,集成了语音识别(ASR)、语音活动检测(VAD)、标点符号恢复、语言模型、说话人验证与分类及多说话者识别等功能。
- **优势**:适合中国用户,标点符号更精确,对普通话的识别体验更佳,同时提供易用的脚本和教程,支持预训练模型的推理与微调。
- **适用人群**:无论是初学者还是专业人员,都可通过FunASR享受语音识别技术的乐趣与便利。
### 技术部署与体验
- **服务端部署**:通过Docker容器快速部署,包括下载Docker镜像、创建模型文件夹、运行并调试服务等步骤。文中提供了详细的命令和参数示例。
- **Demo验证**:通过下载官方提供的Demo包,可快速测试FunASR的识别能力。用户可根据个人偏好选择Python或是HTML版测试界面。文中详细说明了如何设置服务器地址并进行实时语音识别测试。

### 使用体验及结果
- **识别效果**:使用预训练模型进行测试,结果显示FunASR在识别准确率和速度上都表现出色。
- **问题解决**:遇到wss连接失败、SSL握手失败等问题时,通过调整启动参数(如添加`--certfile 0`)可有效解决。
### 扩展功能与应用前景
- **离线转写**:除实时语音听写外,FunASR还支持离线文件转写,提供了更多应用场景选择。
- **商业应用**:项目提供了训练脚本,为商用化提供了可能,适合对语音识别技术有深入需求或想要进一步开发的用户。
### 后记
- 鼓励读者动手实践,积极探索FunASR的更多功能,并指出可以通过留言讨论来解决遇到的问题。
### 资源链接
- 提供了GitHub项目地址和官网地址,方便用户进一步了解和学习FunASR。
通过这篇文章,读者不仅能够了解到FunASR的基本功能和优势,还能获得详细的部署和使用教程,为实际应用提供了有力指导。

更新时间 2024-09-15