☰
端侧语音模型选型指南:sherpa-onnx、FunASR、whisper.cpp与Audio8方案对比
2026/10/26 4:29:10 网站建设 项目流程

端侧语音这块,这两年问的人越来越多。我自己的观察是,大家一开始都盯着云端API,觉得方便、效果好,但真到了要落地的时候,延迟、成本、隐私、离线可用性这几个问题一摆出来,端侧方案就绕不开了。最近不少人在讨论“无界方舟Audio8”的四类方案,还有sherpa-onnx、FunASR、whisper.cpp这几个关键词反复出现,我干脆把这几个东西拆开聊一聊,顺便把端侧语音模型选型的逻辑理清楚。

先说清楚这篇内容适合谁看。如果你正在做智能硬件、车载语音、离线转写工具、会议记录设备,或者单纯想在本地跑一个语音识别模型玩玩,那这篇应该能帮你省不少试错时间。我会从方案选型的底层逻辑讲起,然后逐个拆解四类方案的特点、适用场景、实操要点,最后给一些我在实际部署中踩过的坑和排查技巧。全文基于常见的端侧语音部署实践来写,不涉及任何特定厂商的机密信息,你可以放心参考。

1. 端侧语音模型选型的底层逻辑

1.1 为什么端侧语音突然变得重要了

端侧语音模型的需求爆发,本质上不是技术驱动的,而是场景驱动的。我接触过不少做智能硬件的团队,他们最开始都用云端方案,因为云端模型大、效果好、迭代快。但一旦产品要出货,问题就来了:用户家里网络不稳定怎么办?设备在电梯里、地下车库、偏远地区怎么用?每次语音交互都要上传云端,用户隐私怎么保障?还有延迟问题,云端往返加上排队,一两秒的响应时间在语音交互里是致命的。

端侧方案的核心价值就三个字:确定性。延迟确定、可用性确定、隐私边界确定。你不需要赌网络质量,不需要担心服务端限流,也不需要把用户语音传到别人的服务器上。当然代价也很明显:算力受限、内存受限、模型精度通常不如云端大模型。所以端侧语音选型本质上是一个约束条件下的最优解问题,不是单纯比谁家模型效果好。

1.2 四类方案的分野逻辑

“无界方舟Audio8”这个标题里提到的四类方案,我理解下来,核心分野在于模型架构和推理框架的组合方式。市面上端侧语音方案大致可以按两个维度来分:一是模型本身是流式还是非流式,二是推理框架是专用还是通用。

流式模型适合实时交互场景,比如语音助手、实时字幕,它需要一边接收音频一边输出结果,对延迟极其敏感。非流式模型适合整段音频转写,比如会议记录、录音文件转文字,它可以等音频全部收完再处理,精度通常更高。推理框架方面,sherpa-onnx、whisper.cpp、FunASR各有侧重,有的主打跨平台轻量部署,有的主打中文场景优化,有的主打模型生态丰富。

这四类方案不是互斥的,很多时候是组合使用。比如用whisper.cpp做离线转写,用sherpa-onnx做实时唤醒和命令词识别,用FunASR做中文长音频处理。关键是要根据你的场景需求来选,而不是盲目追新。

1.3 选型前必须明确的五个问题

在动手选模型之前,我建议你先回答五个问题,这五个问题的答案基本能决定你的技术路线。

第一,你的场景是实时交互还是离线转写?实时交互要求端到端延迟控制在300毫秒以内,离线转写可以放宽到几秒甚至几十秒。第二,你的目标语言是什么?中文、英文、多语种混合,不同模型的表现差异很大。第三,你的硬件平台是什么?是手机、嵌入式设备、PC还是浏览器?不同平台的算力、内存、操作系统限制完全不同。第四,你的精度要求有多高?是命令词识别够用就行,还是需要会议级别的转写精度?第五,你的团队技术栈是什么?有没有C++、Python、移动端开发的经验?

把这五个问题写下来,答案填进去,你的选型范围基本就缩小到一两个方案了。我见过太多团队一上来就纠结“哪个模型最强”,结果忽略了硬件约束和场景需求,最后选了一个跑不动的方案,白白浪费几周时间。

2. 四类方案的核心细节与实操要点

2.1 sherpa-onnx:跨平台轻量部署的首选

sherpa-onnx这两年在端侧语音社区里热度很高,核心原因是它把“跨平台”这件事做得足够彻底。它基于ONNX Runtime做推理后端,支持Android、iOS、Windows、macOS、Linux,甚至可以在树莓派和浏览器里跑。这意味着你一套模型文件,可以在多个平台上复用,不需要为每个平台单独适配推理引擎。

它的另一个优势是模型生态比较全。流式识别、非流式识别、语音合成、声纹识别、关键词唤醒,这些任务都有对应的预训练模型。而且模型文件通常不大,流式中文模型量化后可以压到几十兆,对嵌入式设备比较友好。

实操上,sherpa-onnx的部署流程大致是这样的:先确定你的目标平台,然后从模型仓库里选对应的模型文件,接着把ONNX Runtime的库集成到你的工程里,最后调用它的API做推理。听起来简单,但有几个细节容易踩坑。

注意:sherpa-onnx的模型文件通常包含encoder、decoder、joiner三个部分,流式模型还需要额外的tokens文件。下载模型时一定要确认文件完整性,缺一个文件推理就会报错。

我在一个Android项目里集成sherpa-onnx时,遇到过一个典型问题:模型在模拟器上跑得好好的,一到真机就崩溃。排查后发现是ABI架构不匹配,模拟器是x86,真机是arm64,需要确保ONNX Runtime的so库包含了正确的架构。这个问题在官方文档里提得不多,但实际部署时很常见。

另一个经验是,sherpa-onnx的流式识别对音频采样率有要求,通常是16kHz、单声道、16bit PCM。如果你的音频源是48kHz或者立体声,需要先做重采样和声道合并。这个预处理步骤看起来简单,但如果采样率转换做得不好,识别精度会明显下降。我一般用libsamplerate或者sox来做重采样,质量比简单的线性插值好很多。

2.2 FunASR:中文场景的深度优化

FunASR是中文语音社区里口碑比较好的一个工具包,它的优势在于对中文场景做了大量优化。中文语音识别有几个难点:同音字多、方言口音复杂、中英文混合常见。FunASR的模型在这些方面表现比较稳,尤其是它的Paraformer结构,在中文长音频转写上精度不错。

FunASR支持流式和非流式两种模式,流式模式适合实时字幕和语音交互,非流式模式适合会议记录和音频文件转写。它还集成了语音端点检测(VAD)、标点恢复、说话人分离等配套功能,基本上一个工具包就能覆盖完整的语音处理链路。

部署FunASR时,我建议优先考虑Python环境,因为它的官方示例和文档大多是Python的。如果你要在C++环境里用,需要自己导出ONNX模型或者用LibTorch,工作量会大一些。不过FunASR的模型导出工具做得还算完善,按照文档操作基本能跑通。

提示:FunASR的流式模型对首字延迟比较敏感,如果你的场景要求快速响应,建议把chunk size调小,但这样会增加计算量。需要在延迟和算力之间做权衡。

我在一个会议记录项目里用FunASR做长音频转写,发现一个有意思的现象:模型对说话人切换比较敏感,如果两个人声音接近,说话人分离的准确率会下降。后来我在预处理阶段加了一个简单的能量检测,把静音段切掉再送入模型,效果好了不少。这个技巧在官方文档里没写,但实际用起来很有效。

2.3 whisper.cpp:离线转写的通用选择

whisper.cpp是OpenAI的Whisper模型在C++上的推理实现,最大的特点是纯C++、无外部依赖、跨平台。它不需要Python环境,也不需要ONNX Runtime,编译出来就是一个可执行文件,扔到任何机器上都能跑。这个特性让它在嵌入式设备和桌面工具里很受欢迎。

Whisper模型本身是多语种的,支持几十种语言,英文和欧洲语言的表现尤其好。中文表现虽然不如FunASR专门优化过的模型,但日常使用也够用。whisper.cpp提供了多种模型尺寸,从tiny到large,你可以根据硬件算力选择。tiny模型只有几十兆,在树莓派上都能跑;large模型精度高,但需要几个G内存。

实操上,whisper.cpp的编译很简单,clone下来make一下就行。但模型文件需要单独下载,而且不同尺寸的模型文件格式不一样,下载时要注意对应版本。推理时,它支持多种输出格式,包括纯文本、带时间戳的SRT、JSON等,方便后续处理。

注意:whisper.cpp的默认参数对短音频不太友好,如果音频短于1秒,可能会被忽略。如果你的场景是命令词识别,建议用sherpa-onnx或者专门的唤醒词模型,而不是whisper.cpp。

我在一个离线转写工具里用whisper.cpp处理播客音频,发现它的时间戳对齐做得不错,但标点符号有时候会缺失。后来我在后处理阶段加了一个简单的规则引擎,根据停顿长度和语气词来补标点,效果提升明显。这个后处理步骤虽然简单,但能显著改善阅读体验。

2.4 Audio8方案:四类组合的工程化思路

“无界方舟Audio8”这个标题里的Audio8,我理解它代表的是一套工程化的组合方案,而不是单一模型。它的核心思路是把端侧语音任务拆成四类:唤醒、命令词、实时转写、离线转写,然后针对每类任务选择最合适的模型和框架。

唤醒和命令词任务通常用轻量级的流式模型,比如sherpa-onnx的关键词检测模型,模型大小可以压到几兆,功耗极低,适合常驻运行。实时转写用流式ASR模型,比如FunASR的流式Paraformer或者sherpa-onnx的流式Zipformer,延迟控制在几百毫秒。离线转写用非流式大模型,比如whisper.cpp的medium或large模型,精度优先。

这种组合方案的好处是资源按需分配。唤醒任务常驻但极轻量,实时转写按需启动,离线转写可以等设备空闲时再跑。对于电池供电的设备来说,这种分层设计能显著延长续航。

实操上,组合方案的关键是任务调度和资源管理。你需要一个统一的音频采集模块,把音频流分发给不同的任务;还需要一个模型加载器,按需加载和卸载模型,避免内存占用过高。我在一个车载语音项目里用过类似的架构,发现最大的挑战不是模型本身,而是任务之间的优先级和资源竞争。比如实时转写正在跑的时候,唤醒任务不能停,否则用户说唤醒词没反应。这就需要合理的线程调度和内存预留。

3. 实操过程与核心环节实现

3.1 环境准备与依赖安装

不管你选哪类方案,环境准备都是第一步。我以Linux环境为例,把sherpa-onnx、FunASR、whisper.cpp的安装过程走一遍。Windows和macOS的步骤类似,主要是包管理工具不同。

先说sherpa-onnx。它提供了预编译的Python包和C++库。Python环境下,直接pip install sherpa-onnx就行。C++环境下,需要下载预编译的库文件或者从源码编译。从源码编译时,需要先安装CMake和ONNX Runtime,然后按照官方文档的步骤来。我建议优先用预编译版本,省时省力。

# Python环境安装sherpa-onnx pip install sherpa-onnx # 验证安装 python -c "import sherpa_onnx; print(sherpa_onnx.__version__)"

FunASR的安装稍微复杂一点,它依赖PyTorch和torchaudio。建议用conda创建一个独立环境,避免和系统Python冲突。

# 创建conda环境 conda create -n funasr python=3.9 conda activate funasr # 安装PyTorch(根据CUDA版本选择) pip install torch torchaudio # 安装FunASR pip install funasr

whisper.cpp的安装最简单,它没有Python依赖,纯C++编译。

# 克隆仓库 git clone https://github.com/ggerganov/whisper.cpp cd whisper.cpp # 编译 make # 下载模型(以base模型为例) bash ./models/download-ggml-model.sh base

提示:whisper.cpp的模型下载脚本需要网络访问,如果网络受限,可以手动下载模型文件放到models目录下。模型文件格式是ggml,不要下错成其他格式。

3.2 音频预处理的关键参数

音频预处理是端侧语音里最容易被忽视但影响最大的环节。我见过不少项目,模型选得很好,但预处理没做好,识别精度大打折扣。核心参数有三个:采样率、位深、声道数。

采样率方面,绝大多数语音模型要求16kHz。如果你的音频源是44.1kHz或48kHz,需要做降采样。降采样不是简单丢采样点,而是要用低通滤波器防止混叠。我一般用sox或者libsamplerate来做,质量有保障。

# 用sox做重采样和声道转换 sox input.wav -r 16000 -c 1 -b 16 output.wav

位深方面,16bit是最常用的,也有模型支持8bit或32bit浮点。声道数方面,语音识别通常用单声道,立体声需要合并。合并时不要简单取平均,因为两个声道可能有相位差,直接平均会导致抵消。我一般只取一个声道,或者用专业工具做相位对齐后再合并。

还有一个容易被忽视的参数是音频增益。如果录音音量太小,模型可能识别不出来。我通常会在预处理阶段做一个归一化,把音频峰值调到-3dB左右。这个步骤用sox或者ffmpeg都能做。

3.3 模型推理的代码实现

以sherpa-onnx的流式识别为例,我写一个最小可运行的Python示例。这个示例展示了从音频读取到识别结果输出的完整流程。

import sherpa_onnx import numpy as np import soundfile as sf # 创建流式识别器 recognizer = sherpa_onnx.OnlineRecognizer.from_transducer( tokens="model/tokens.txt", encoder="model/encoder.onnx", decoder="model/decoder.onnx", joiner="model/joiner.onnx", num_threads=2, sample_rate=16000, feature_dim=80, ) # 读取音频 audio, sample_rate = sf.read("test.wav", dtype="float32") assert sample_rate == 16000 # 创建流 stream = recognizer.create_stream() # 分块送入音频 chunk_size = 1600 # 100ms for i in range(0, len(audio), chunk_size): chunk = audio[i:i+chunk_size] stream.accept_waveform(16000, chunk) while recognizer.is_ready(stream): recognizer.decode_stream(stream) # 获取最终结果 result = recognizer.get_result(stream) print(result)

这段代码的关键点是分块送入和循环解码。流式识别的核心就是一边收音频一边出结果,所以不能等音频全部读完再处理。chunk_size的选择会影响延迟和精度,100ms是一个比较平衡的值。

FunASR的推理代码更简洁一些,因为它封装得比较好。

from funasr import AutoModel model = AutoModel(model="paraformer-zh", model_revision="v2.0.4") res = model.generate(input="test.wav", batch_size_s=300) print(res[0]["text"])

whisper.cpp的Python绑定也有,但更常用的是命令行调用。

# 命令行转写 ./main -m models/ggml-base.bin -f test.wav -l zh -otxt

3.4 性能调优的实操记录

性能调优这块,我记录了几个实际项目中的数据。在一个ARM Cortex-A53平台上,sherpa-onnx的流式Zipformer模型,单线程推理的实时率大约是0.3,意思是处理1秒音频需要0.3秒计算时间。双线程可以降到0.2左右,但再增加线程收益就不明显了,因为内存带宽成了瓶颈。

whisper.cpp的base模型在同样的平台上,实时率大约是0.8,接近实时。tiny模型可以做到0.3左右,但精度下降明显。medium模型实时率超过2,基本没法做实时转写,只能做离线处理。

FunASR的Paraformer模型在x86平台上表现很好,实时率可以做到0.1以下,但在ARM平台上需要做量化才能达到可用水平。量化后模型大小可以减少一半以上,推理速度提升30%到50%,精度损失通常在1%到3%之间。

注意:量化不是万能的,有些模型对量化很敏感,量化后精度断崖式下降。建议量化后一定要做完整的测试集评估,不要只看几个样例。

我的一般策略是:先跑通浮点模型,确认精度达标,然后再尝试量化。量化后如果精度下降超过5%,就放弃量化,改用更小的模型或者优化推理代码。这个策略帮我避免了好几次“量化后模型不能用”的尴尬。

4. 常见问题与排查技巧实录

4.1 模型加载失败的排查思路

模型加载失败是端侧部署里最常见的问题,原因通常有三类:文件缺失、格式不匹配、路径错误。

文件缺失方面,sherpa-onnx的模型通常需要多个文件,缺一个就报错。我建议下载模型后先列一下文件清单,确认encoder、decoder、joiner、tokens都在。whisper.cpp的模型是单文件,但要注意ggml格式和gguf格式的区别,不同版本的whisper.cpp支持的格式不一样。

格式不匹配方面,ONNX模型的opset版本要和ONNX Runtime版本兼容。如果模型是用新版本ONNX导出的,而运行时是老版本,可能会报不支持的算子错误。解决办法是升级ONNX Runtime或者重新导出模型。

路径错误方面,相对路径和绝对路径的问题很常见。我建议在代码里打印一下实际加载的路径,确认文件确实存在。这个简单的调试步骤能省很多时间。

4.2 识别精度不达预期的调优方法

识别精度不达预期,先不要急着换模型,按这个顺序排查:音频质量、预处理参数、模型选择、解码参数。

音频质量是第一位的。如果录音有噪声、混响、削波,再好的模型也救不回来。我一般会先用音频分析工具看一下频谱,确认没有明显的噪声和失真。如果有问题,先做降噪和去混响。

预处理参数方面,重点检查采样率、位深、声道数是否和模型要求一致。我遇到过一个案例,音频是48kHz,但模型要求16kHz,代码里忘了重采样,结果识别出来全是乱码。这种低级错误在实际项目中并不少见。

模型选择方面,如果你的场景是中文,优先用FunASR或者sherpa-onnx的中文模型,whisper的中文表现相对弱一些。如果是多语种混合,whisper的多语种能力更强。

解码参数方面,beam size、温度、长度惩罚这些参数会影响结果。beam size越大,精度通常越高,但计算量也越大。我一般从默认值开始,如果精度不够再逐步调大beam size。

4.3 实时场景下的延迟优化

实时场景的延迟优化,核心是减少端到端处理时间。端到端延迟包括音频采集、预处理、模型推理、后处理四个环节。每个环节都要优化。

音频采集环节,缓冲区大小很关键。缓冲区太大,延迟高;太小,容易丢帧。我一般用100ms的缓冲区,兼顾延迟和稳定性。

预处理环节,重采样和降噪是耗时大户。如果硬件算力有限,可以考虑跳过降噪,或者用轻量级的降噪算法。重采样尽量用硬件加速或者优化的库。

模型推理环节,流式模型比非流式模型延迟低,小模型比大模型延迟低。如果延迟要求极高,可以考虑用命令词模型代替通用ASR模型,命令词模型的推理速度通常快一个数量级。

后处理环节,标点恢复和文本格式化会增加延迟。如果延迟敏感,可以先把原始结果输出,后处理异步进行。

4.4 常见问题速查表

问题现象可能原因排查方法解决方案
模型加载报错文件缺失或格式不匹配检查文件清单和版本补齐文件或重新导出模型
识别结果乱码采样率不匹配检查音频采样率和模型要求重采样到模型要求的采样率
识别精度低音频质量差或模型不匹配分析音频频谱,确认模型语言降噪或更换模型
实时延迟高缓冲区太大或模型太大测量各环节耗时减小缓冲区或换小模型
内存占用高模型太大或内存泄漏监控内存使用量化模型或修复泄漏
量化后精度下降模型对量化敏感对比量化前后精度放弃量化或换模型

提示:这张表是我在实际项目中总结的,覆盖了大部分常见问题。遇到新问题时,建议先按这个表排查一遍,能解决八成以上的问题。

4.5 几个容易踩的坑

第一个坑是忽略音频格式。WAV、MP3、FLAC、OGG,不同格式的解码方式不一样。有些库只支持WAV,遇到MP3就报错。我建议在预处理阶段统一转成WAV,避免格式兼容问题。

第二个坑是线程数设置不当。推理线程数不是越多越好,超过物理核心数反而会因为上下文切换导致性能下降。我一般设置为物理核心数的一半到全部,具体要看任务类型。

第三个坑是模型热加载。有些场景需要在运行时切换模型,如果直接卸载再加载,会有明显的卡顿。我建议用双缓冲的方式,先加载新模型,再切换指针,最后卸载旧模型。

第四个坑是忽略功耗。端侧设备很多是电池供电,模型常驻运行会显著影响续航。我建议对常驻任务用极轻量模型,重任务按需启动,用完就卸载。

5. 不同场景下的选型建议

5.1 智能硬件场景

智能硬件场景的特点是算力有限、内存有限、功耗敏感。我一般推荐sherpa-onnx的流式模型做唤醒和命令词,模型大小控制在10MB以内。如果需要实时转写,用sherpa-onnx的流式Zipformer,量化后可以在中低端芯片上跑。离线转写用whisper.cpp的tiny或base模型,按需启动。

5.2 桌面工具场景

桌面工具场景算力相对充裕,可以追求更高的精度。我推荐FunASR做中文转写,whisper.cpp做多语种转写。如果要做实时字幕,用FunASR的流式模型或者sherpa-onnx的流式模型。桌面场景对功耗不敏感,可以用大一点的模型。

5.3 移动端场景

移动端场景介于两者之间,算力和功耗都需要考虑。我推荐sherpa-onnx的移动端方案,它有针对Android和iOS的预编译库,集成比较方便。模型选择上,流式模型做实时交互,非流式模型做离线转写。移动端的内存管理要特别注意,模型加载后要及时释放不用的资源。

5.4 浏览器场景

浏览器场景比较特殊,需要用WebAssembly。sherpa-onnx有WASM版本,可以在浏览器里跑流式识别。whisper.cpp也有WASM版本,但模型加载时间较长,适合离线转写。浏览器场景的算力取决于用户设备,建议用轻量模型,并提供降级方案。

6. 模型量化与压缩的实操细节

6.1 量化的基本原理

量化是把浮点权重转换成低精度整数的过程,目的是减少模型大小和加速推理。常见的量化精度有INT8、INT4,精度越低,模型越小,但精度损失也越大。端侧场景通常用INT8,平衡大小和精度。

量化的核心是校准,需要用一批代表性数据来统计权重的分布,确定量化参数。校准数据的选择很关键,要覆盖实际场景的音频特征。如果校准数据太单一,量化后的模型在实际场景中表现会下降。

6.2 量化工具的使用

ONNX Runtime提供了量化工具,可以对ONNX模型做动态量化或静态量化。动态量化不需要校准数据,但精度损失可能大一些。静态量化需要校准数据,精度更好。

from onnxruntime.quantization import quantize_dynamic, QuantType quantize_dynamic( model_input="model.onnx", model_output="model_quant.onnx", weight_type=QuantType.QUInt8, )

whisper.cpp的量化是内置的,下载模型时可以选择量化版本,或者用quantize工具自己转。

# 量化模型 ./quantize models/ggml-base.bin models/ggml-base-quant.bin q5_0

注意:量化后的模型需要重新测试精度,不要直接上线。我一般会准备一个测试集,对比量化前后的识别率,确认下降在可接受范围内。

6.3 量化后的精度补偿

如果量化后精度下降太多,可以尝试几种补偿方法。一是混合量化,对敏感层用高精度,其他层用低精度。二是量化感知训练,在训练阶段就模拟量化误差,让模型适应。三是后处理补偿,用语言模型对识别结果做纠错。

我在一个项目里用过混合量化,把encoder的前几层保持FP16,后面的层用INT8,精度损失从5%降到了1.5%,模型大小只增加了10%。这个方案在精度和大小之间取得了不错的平衡。

7. 端侧语音的未来演进方向

端侧语音模型这两年进步很快,我观察到几个趋势。一是模型结构越来越高效,比如Zipformer、Paraformer这些新结构,在相同精度下比传统Transformer小很多。二是量化技术越来越成熟,INT4甚至INT2的量化方案开始出现,模型可以压到几兆。三是多任务融合,一个模型同时做唤醒、识别、合成,减少模型数量和内存占用。

对于开发者来说,这意味着端侧语音的门槛在降低,以前需要高端芯片才能跑的任务,现在中低端芯片也能跑。但同时,模型选择也更多了,选型反而变得更复杂。我的建议是,不要追新,先明确自己的场景需求,然后选最成熟的方案。成熟方案意味着文档全、社区活跃、踩坑的人多,遇到问题容易找到答案。

另外,端侧语音和云端的边界在模糊。有些方案支持端云协同,简单任务端侧处理,复杂任务云端处理。这种混合架构可能是未来的主流,但实现复杂度也更高。对于大多数项目来说,先把纯端侧方案跑通,再考虑端云协同,是比较稳妥的路径。

我个人在实际操作中的体会是,端侧语音选型没有银弹,每个方案都有它的适用场景和局限性。sherpa-onnx胜在跨平台和轻量,FunASR胜在中文优化,whisper.cpp胜在通用和多语种。Audio8的四类方案思路,本质上是把这些工具组合起来,按场景分配任务。你不需要精通所有工具,但需要理解每个工具的特点,才能在具体项目中做出合理的选择。

最后分享一个小技巧:在选型阶段,不要只看论文指标,一定要用你自己的数据做测试。我见过太多模型在公开测试集上表现很好,但一到实际场景就拉胯。准备一个包含真实场景音频的测试集,哪怕只有几十条,也能帮你避开很多坑。这个测试集不需要标注,只需要你人工听一下识别结果,判断是否可用。这个简单的步骤,能帮你省下几周的试错时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询