来源:
notes/documents/01_dg板卡X5_语音转文字方案对比与转写结果.mddg 板卡 X5 语音转文字方案对比与转写结果
一句话结论
在 dg(D-Robotics RDK X5)上,语音转文字不需要 BPU。官方 BPU 路线(hobot_audio + 地平线 HRSC 语音 SDK)只吃麦克风阵列、喂不了音频文件;文件转写实测全部走 CPU(sherpa-onnx)。同一段 600 秒音频下,paraformer-zh large int8 + 标点 质量最好,跑完 2 小时 35 分的《地平线 2025 产品发布会》全量约 29 分钟;paraformer-zh small int8 最快,约 14 分钟。
测试环境
- 设备:D-Robotics RDK X5(dg;8×Cortex-A55 @1.2GHz,3GB RAM,BPU 约 996MHz,Ubuntu 22.04 / RDK OS,内核 6.1.83)
- 接入:在
10.71.48.85上ssh dg(root@10.71.48.154) - 运行时:
/tmp/asrvenv(Python 3.10.12)+ sherpa-onnx 1.13.8(CPU),num_threads=4 - 纪律:所有方案串行执行,一次只跑一个模型(板载 CPU 不足以并发)
- 模型来源:
hf-mirror.com(约 5 MB/s);音频统一切成 30 秒一段,未用 VAD
测试素材
| 文件 | 时长 | 语言 | 说明 |
|---|---|---|---|
horizon_sample60.wav |
60 秒 | 英文 | 个人助理工作区 .cc-connect/tmp/ 下的样例(地平线股东会 Q&A 开场) |
clip.wav |
19 分钟 | 中文 | 亚布力论坛开幕式片段 |
horizon-2025.wav |
2 小时 35 分 | 中文 | 个人助理里最大的 wav(1.64GB、44.1kHz 立体声,带 16 个 10 分钟切片) |
全量 2h35m × 各方案在 1.2GHz 板子上要数小时,因此耗时对比统一使用它的 chunks/chunk-007.wav(600 秒、16kHz 单声道),再按 RTF 外推全量。
方案总表(600 秒音频,4 线程)
| 方案 | 算力 | 模型 | 大小 | 加载 | 解码 | RTF | 全量 2h35m 外推 | 结论 |
|---|---|---|---|---|---|---|---|---|
hobot_audio(TROS 官方) |
BPU | 地平线 HRSC e2e:encoder.bin + ctc.bin + LM/ITN |
168MB+ | — | — | — | — | 只支持麦克风阵列,无法用于文件 |
| paraformer-zh small int8 | CPU | sherpa-onnx paraformer-zh-small | 78MB | 11.8s(冷启 118s) | 54.7s | 0.091 | 约 14 分钟 | 最快,专有名词易错 |
| paraformer-zh large int8 | CPU | sherpa-onnx paraformer-zh-2023-03-28 | 214MB | 10.2s | 109.6s | 0.183 | 约 28 分钟 | 准确率最好 |
| paraformer-large + 标点 | CPU | 追加 CT-Transformer zh-en vocab272727 | +281MB | 2.2s | 3.6s/2300 字 | — | 约 29 分钟 | 推荐组合 |
| SenseVoice small int8 | CPU | SenseVoice zh-en-ja-ko-yue-2024-07-17 | 229MB | 8.9s | 148.4s | 0.247 | 约 38 分钟 | 自带标点,中英混合友好 |
| SenseVoice small fp32 | CPU | 同上(fp32) | 895MB | 433.1s | 342.4s | 0.571 | 约 88 分钟 | 与 int8 结果几乎一致,不划算 |
| Whisper-small int8 | CPU | sherpa-onnx whisper-small | 359MB | 10.2s | 304.3s(120 秒音频) | 2.536 | 约 6.5 小时 | 中文更差、只支持 30 秒窗口,排除 |
各方案细节
1. BPU 路线:hobot_audio(官方,板上已装)
- 板上已装
tros-humble-hobot-audio 2.3.5(2025-09-18 更新),SDK 版本horizon_x5_robot.0.0.3 - 模型确实跑在 BPU:
/opt/tros/humble/lib/hobot_audio/hrsc/e2e_decoder_conf/model/encoder.bin(168MB 量化 transformer,带att_mask_calibrated_quantized校准)+ctc.bin,配G.fst(36MB)/TL.fst(11MB)语言模型、热词与 ITN - 能力:唤醒词 + 命令词 + 声源定位 DOA + 自由文本 ASR;
asr_mode=1唤醒后识别一次、=2持续识别,结果发/audio_asr(std_msgs/String),唤醒/命令词走/audio_smart - 为什么本次用不了:输入固定走 ALSA 麦克风阵列(配置
micphone_chn=8),实测裸板启动直接报Channels count (8) not available后退出;SDK 闭源(libhrsc.so),模型不能单独抽出来喂文件。要跑必须配 2mic WM8960 Audio HAT 或 4mic Audio Driver HAT(DOA 仅 4mic 支持) - 旁证:官方 X5 案例文档《语音转文字(ASR)》推荐的反而是 CPU 的 SenseVoice(8 核 RTF 0.52);
tros-humble-sensevoice-ros2(434MB)也在 apt 源里,依赖中没有 BPU 库
2. CPU 路线:paraformer-zh small int8
- 优点:最快(RTF 0.091,全量约 14 分钟),内存占用小
- 缺点:输出无标点;专有名词和近音词易错(
逼近听成b g、暴论听成背背个报论);英文完全不可用——同一模型跑 60 秒英文样例只得到中英混杂的乱码
3. CPU 路线:paraformer-zh large int8
- 优点:同一段音频把 small 的明显错误都纠正了(
逼近那个东西、提一个暴论) - 缺点:速度约为 small 的一半(RTF 0.183);同样无标点,需标点模型补齐
4. CPU 路线:SenseVoice small
- 优点:多语种(中英日韩粤),自带标点,英文转写明显优于中文单语模型;int8 与 fp32 的输出文本几乎完全一致
- 缺点:RTF 0.247,慢于 paraformer-large;中文近音词仍会错(
逼近听成毕竟) - fp32 结论:加载 433s、解码 RTF 0.571,质量无提升,不建议
5. CPU 路线:Whisper-small int8(对照)
- 实测 RTF 2.536(120 秒音频耗时 304 秒),全量需约 6.5 小时;且只接受 30 秒窗口,中文漏字错字多
- 结论:在 dg 上不作为候选
6. 标点模型:CT-Transformer(zh-en)
- 给 2300 字输出加标点只需 3.6 秒(加载 2.2 秒),成本可忽略
- 与 paraformer-large 组合后,正文可读性接近现成的 FunASR 转写
质量对比(同一句)
| 方案 | 转写结果 |
|---|---|
| paraformer-small | 人工智能实际上是在 b g 那个东西 |
| paraformer-large | 人工智能实际上是在逼近那个东西(后文还有”提一个暴论”) |
| SenseVoice int8 / fp32 | 人工智能实际上是在毕竟那个东西(带标点) |
| Whisper-small | 人工能实上是在近那个东西(漏字) |
关键工程结论
- 冷启动很贵:paraformer-small 首次加载 118 秒,页面缓存后只需 11.8 秒;做成常驻服务能省掉每次加载
- BPU 与文件转写无关:BPU 侧只有视觉模型和闭源语音 SDK,文件转写一律 CPU
- 缺口在采集端:板载 ES8326 的 3.5mm 口需要 4 段式(带 MIC)耳机,未插时录到的是满幅削顶噪声(16bit peak 32768;24bit peak 8388608、RMS 3.3M);
snd-usb-audio内建(USB 声卡即插即用);snd-aloop模块不存在,无法把音频文件回环喂给 ALSA 程序 - 热词是下一步提质点:人名与术语(余凯、俞敏洪、智驾)目前靠模型猜,可用
hotwords/custom_dict.txt改善
推荐
- 音频文件转写:paraformer-zh large int8 + CT-Transformer 标点(全量 2h35m 约 29 分钟)
- 追速度:paraformer-zh small int8 + 标点(约 15 分钟)
- 中英混合素材:SenseVoice small int8(自带标点,约 38 分钟)
- 后续可选优化:常驻
/v1/asr服务、用 VAD 替代固定 30 秒切分、热词表、试 8 线程
附录 A:英文 60 秒转写(SenseVoice small int8,RTF 0.249)
素材:horizon_sample60.wav(60 秒,英文,地平线股东会 Q&A 开场)。
Stud begin There will be a Q and A session for shareholders participating in the annual general meeting, you can now start raising questions using the Q and A box functions on the E meeting system. My first introduce the company’s board senior management members while with us todayLadies and gentlemen are Dr. Kaiyu founder, chairman of the board chief executive officer and executive director members. Of Reeration committee and the innomination Committee, Dr. Chang Huang, cofounder, executive director and chief technology officer, Dr. Jian Xu, executive director and chief ecosystem officer, Dr. Li Mingcheng, executive director and vice chairman of the board, Mr. Liang Li, non executiveive director, Mr. Qin Liu, non executiveive director.
注:人名是音译,余凯应为 Dr. Kai Yu、黄畅应为 Dr. Chang Huang、徐健应为 Dr. Jian Xu;建议加热词表。
附录 B:中文 10 分钟切片转写(paraformer-zh large int8 + 标点,节选)
素材:horizon-2025.wav 的 chunks/chunk-007.wav(600 秒)。加载 10.2s + 解码 109.6s + 标点 3.6s,RTF 0.206。
比如说数学跟逻辑,数学跟逻辑这个世界都不存在的时候,当宇宙大爆炸还没有发生的时候,那个时候数学跟逻辑其实就已经存在了啊,这个是世界背后的真相。所以人工智能实际上是在逼近那个东西啊,世界背后的这个真相啊,所以这个里面我想跟大家又来提一个暴论,习以为常是真的吗?是正确的吗?顺着互联网时代的惯性来思考人工智能时代是真的吗?是对的吗?哦,我觉得提供这么一个观点,也不一定是说求正确,但至少大家可以思考。哦,我们觉得a i时代人类的行为数据没有价值,求至少在过去我们从事自动驾驶。其实我们也发现百分之九十九的人类司机的驾驶行为是不值得学习的。因为他开的真的是不好,他们刹车刹车真的是很重,你知道吗?啊,他们很多的时候的拐弯觉得不够优雅。
所以对于这个智能驾驶来讲的话,我觉得智能驾驶的目标其实不是说做的跟人开车一样,安全是要做的跟远比人人要安全。它不是说开车要做到开车跟人一样舒适,它是要做到远比人开车更加的舒适。所以智能驾驶的目标其实不是洞见人间烟火,而是逼近驾驶之神。我认为这个目标最终是可以实现的啊,我自己大概觉得悲观估计或者是客观估计可能十年。
那这个时候其实所有手机厂商呃要跟进的,其实就是什么呢?就是以高打低以快打慢。我刚刚已经讲了,自动驾驶,智能驾驶,就像智能手汽车的这个基带。这样它从今年开始自驾平权,那么从啊基础配就变成了是一百t算力的l二的辅助驾驶,对吧?现在我们都叫l二辅助驾驶,那它一定会往前发展。两到三年以后的话呢,它可能会出现l三。那么l三的话呢,整个的算力大概要五百到一千体。你比如说现在索尔就基本上就已经在这个范围,那地平线要推出来的新一代产品也是这个范围。
注:600 秒完整转写和其余 5 个方案的完整输出已逐篇归档(见下方「附录 D」)。
附录 C:原始文件位置
- dg(root@10.71.48.154):
/tmp/asr/下有 venv、6 个模型目录和chunk-007.*.txt、whisper-120s.txt - 本机(10.71.48.31):对比输出在
/tmp/asr-bench/*.txt - 工作区副本(10.71.48.85):
.cc-connect/tmp/asr-out/(含 60 秒英文与 19 分钟中文转写) - 测试素材:
horizon_sample60.wav、clip.wav在个人助理工作区.cc-connect/tmp/;最大文件为bilibili_transcripts/BV1uu5WzvEnn/horizon-2025.wav
附录 D:各方案完整原文归档
6 个方案对 chunk-007.wav(600 秒)的完整原始转写已逐篇建档:
| 方案 | 笔记 | 飞书文档 |
|---|---|---|
| paraformer-zh small int8 | note_08333c97bd4d425f |
https://my.feishu.cn/docx/ACUzdAla2oKno8xO9xvcTz7ynQc |
| paraformer-zh large int8 | note_a77c9dd321d74cf2 |
https://my.feishu.cn/docx/Gb6Nd00w7oQmd9xEjFNcG7uHnkd |
| paraformer-large + CT-Transformer 标点 | note_a013ffb8076b48f2 |
https://my.feishu.cn/docx/WBkwdOInIoudQSx4XgpcK9Inn4l |
| SenseVoice small int8 | note_46df5c75ee884899 |
https://my.feishu.cn/docx/Ltbadt0ZBo9piPxdt0pc7DggnKh |
| SenseVoice small fp32 | note_5de988d5ede547c1 |
https://my.feishu.cn/docx/Q1eDdxO8Uogb6fx3GHxcsSIJn3k |
| Whisper-small int8(仅前 120 秒) | note_19098c73f1194369 |
https://my.feishu.cn/docx/Q18edangxotDyhx1H5JcPXZonld |
| 全文 2h34m54s(推荐方案) | note_796c8125fe43479a |
https://my.feishu.cn/docx/TmnvdRtnFoEjq5xtLrscFbXLnag |
均为原始输出、未校对。
附录 D.1:BPU 直调 SDK 深挖
后来又找到了绕过 ALSA 直接调 SDK 的办法(可跑通,但吞吐不如 CPU),详见 note_bd2000824dc4455f(https://my.feishu.cn/docx/FXWuddWXQoT3LzxVIJxc73YynPe)。
全文(2 小时 34 分 54 秒)转写已单独建档,见上表最后一行。