一、概述
听说端到端语音识别工具包 WeNet
效果还不错,但在测试电脑上用 Docker
进行测试并不成功。在使用源码编译的过程中也遇见些问题,遂记录备忘。
二、安装 libtorch
1 | brew install libtorch |
三、下载 WeNet 源码
1 | # 当前目录: /your/folder |
四、编译
1 | # 当前目录: /your/folder |
五、下载 WenetSpeech 预训练模型
下载方式在这篇文章有说明,不再赘述。
六、测试
准备一条包含普通话的 16kHz SampleRate
、16 BitsPerSample
(s16le)的音频。
1、测试 decoder_main
1 | # 当前目录: /your/folder/wenet-e2e/wenet/runtime/server/x86/build |
音频长度为 2 分钟左右。在测试机上的运行时间:
1 | 15.71s user 4.52s system 97% cpu 20.799 total |
2、测试 websocket_server_main
首先开启 WebSocket
服务:
1 | # 当前目录: /your/folder/wenet-e2e/wenet/runtime/server/x86/build |
然后在浏览器中打开 /your/folder/wenet-e2e/wenet/runtime/server/x86/web/templates/index.html
。在 WebSocket URL
对应的输入框输入 ws://127.0.0.1:10086
。
(图1)
点击 开始录音
按钮开始录音,点击 停止录音
获取识别文字。
七、问题
测试环境:Apple M1
,macOS 12.0.1
, Xcode 13.1
。也测试过在 Docker
上可以运行但不太稳定,也许和镜像是镜像是基于 x86_64
的有关。Windows
或 Linux
环境尚未测试。
1、下载第三方库失败
如果在 cmake ..
的时候下载第三方库失败,可通过其他方式下载好后放入对应的目录。
1 | -- Downloading... |
比如下载 gflags
失败,从 https://github.com/gflags/gflags/archive/v2.2.1.zip
下载好后放入 /your/foler/wenet-e2e/wenet/runtime/server/x86/fc_base/gflags-subbuild/gflags-populate-prefix/src
目录。
涉及如下库:gflags
、googletest
、boost
和 libtorch
。
提醒:版本和保存的文件名要一致。
2、与 libtorch 相关的链接错误
由于自动下载的 libtorch
是 x86_64
架构。如果在 M1 上进行编译,可使用 brew
安装 libtorch。在链接时其优先级较高,无需再做其他配置。
1 | brew install libtorch |
3、C++14 相关错误
如果在 cmake --build .
的时候报类似如下的编译错误:
1 | /your/folder/wenet/runtime/server/x86/fc_base/libtorch-src/include/ATen/ATen.h:4:2: error: C++14 or later compatible compiler is required to use ATen. |
修改 CMakeLists.txt
文件
1 | # 当前文件: /your/folder/wenet-e2e/wenet/runtime/server/x86/CMakeLists.txt |