💡
大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。
FunASR是什么?
FunASR 是一个基本的语音识别工具包,提供多种功能,包括语音识别 (ASR)、语音活动检测 (VAD)、标点符号恢复、语言模型、说话人验证、说话人分类和多说话者 ASR。 FunASR提供方便的脚本和教程,支持预训练模型的推理和微调。
它由阿里达摩研究院推出的语音提取工具包,现在这个工具包还在被开发中,但是现在它能实现的功能已经很强大,当然如果你有更好的想法和点子,也可以加入FunASR的开发。我对于FunASR还是很佩服的,虽说其相对于openai旗下whisper性能上还是存在某些方面的差距的,但是FunASR跟适合中国宝宝体质,FunASR的标点符号更加精确,对于普通话来说有着能给人更好的体验。
无论您是初学者还是经验丰富的专业人士,FunASR都是一个值得一试的平台。它不仅为您提供了学习语音识别所需的工具和资源,更重要的是,它为学习者带来了乐趣和激励,让语音识别的学习之旅变得愉悦而充实。
如果您对语音识别技术充满兴趣,并且希望以一种全新的方式来探索和学习它,那么不妨加入FunASR的行列,一起开启这段富有乐趣的学习之旅吧!
今天就利用这个开源项目,跑一下他们的识别能力。后续的训练、调优都是基于这一步。
注:服务器环境搭建可以参考我之前的文章《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下面还有许多模式可以试。
最重要的,该项目还提供了训练脚本,这就基本可以商用,感兴趣的可以做起来,有什么问题欢迎留言讨论。