更新记录
0.1.1(2026-04-07)
- feat: 安卓改用远端库
0.1.0(2026-04-07)
- feat: 增加TTS语音合成功能
- feat: 实时语音识别停止时返回音频临时文件路径(tempFilePath)
- feat: 添***wen3 ASR模型支持(Android、HarmonyOS、iOS三个平台)
- feat: 添加热词功能,支持通过文件路径(hotwordsPath)和得分权重(hotwordsScore)配置
- feat: 添加convFrontend和tokenizer参数支持Qwen3模型配置
- feat: 添***eb平台支持,基于WebAssembly实现浏览器端ASR功能
- docs: 完善文档,添***wen3模型使用示例和参数说明
- docs: 添加流式TTS效果演示音频链接
- docs: 更新流式TTS示例文本为"沁园春·雪"
- docs: 完善UesSherpaOnnxOptions文档,添加所有缺失字段(解码配置、VAD配置、热词配置等)
0.0.8(2026-04-02)
- fix: 修复ios无法录音问题
平台兼容性
uni-app(4.56)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | √ | √ | 5.1 | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.61)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | 5.1 | √ | - | - |
lime-sherpa-onnx 实时语音识别与语音合成组件
一个基于Sherpa-onnx的实时语音识别与语音合成插件,Sherpa-onnx是k2-fsa团队开发的使用ONNX运行时的实时语音识别引擎,支持多种平台和多种语言模型。本插件支持音频文件识别、实时语音识别和离线语音合成(TTS),适用于需要本地语音转文字和文字转语音功能的应用场景,如语音笔记、语音指令、语音交互等。组件支持Android、iOS和HarmonyOS平台。
本地模型 vs 云端模型:由于模型运行在本地设备上,依赖于手机的算力,生成速度会比云端服务慢。但本地模型的优势在于节省云端服务费用,保护用户隐私(数据不离开设备),以及在无网络环境下仍可使用。如果追求速度和识别精度,云端服务会是更好的选择。
文档链接
📚 组件详细文档请访问以下站点:
安装方法
- 在uni-app插件市场中搜索并导入
lime-sherpa-onnx - 导入后在页面引入相关方法
- 需要自定义基座才能使用
平台特别说明
安卓和iOS平台
重要:在安卓和iOS平台上使用本插件时,需要特别注意以下事项
自定义基座前的准备工作:
- 必须先在页面中引入相关函数:在生成自定义基座之前,确保至少在一个页面中引入并使用插件的相关函数
- 避免被树摇掉:如果没有在代码中实际引用插件函数,构建工具可能会将其视为未使用的代码而在构建过程中"树摇"掉,导致自定义基座中缺少必要的插件功能
示例:
// 在页面中至少添加以下引用代码
import {
uesSherpaOnnx,
useSherpaOnnxTts
} from '@/uni_modules/lime-sherpa-onnx'
// 实际使用这些函数,确保它们不会被树摇掉
// 例如:在页面的某个方法中调用或在组件初始化时使用
鸿蒙特别说明
重要:在HarmonyOS平台上使用本插件时,需要进行以下额外配置
配置步骤:
-
首次运行鸿蒙:先在HBuilderX中运行一次鸿蒙项目,生成必要的文件结构
-
创建配置目录:
- 在项目根目录创建
harmony-configs/entry目录(如果不存在)
- 在项目根目录创建
-
拷贝配置文件:
- 将生成的
unpackage\dist\dev\app-harmony\entry\build-profile.json5文件拷贝到harmony-configs/entry目录
- 将生成的
-
配置Workers:
- 在
harmony-configs/entry/build-profile.json5文件的buildOption字段下添加以下内容:{ "sourceOption": { "workers": [ '../uni_modules/lime-sherpa-onnx/utssdk/app-harmony/workers/NonStreamingAsrWorker.ets', '../uni_modules/lime-sherpa-onnx/utssdk/app-harmony/workers/NonStreamingTtsWorker.ets' ] } }
- 在
说明:这些配置是为了确保HarmonyOS平台能够正确加载和使用插件中的Worker线程,从而实现语音识别和语音合成功能。
特性
语音识别 (ASR)
- 支持多种模型类型:paraformer、transducer、whisper、nemo_ctc、zipformer等
- 支持在线(online)和离线(offline)两种识别模式
- 支持音频文件识别和实时语音识别
- 支持语音活动检测(VAD),提高识别准确性
语音合成 (TTS)
- 支持多种TTS模型:vits、matcha、kokoro、kitten、pocket、supertonic、zipvoice
- 支持一次性生成和流式生成两种模式
- 支持多说话人、语速调节
- 流式生成支持边生成边播放
通用特性
- 支持自定义模型路径和配置参数
- 提供完整的错误处理机制
代码演示
1. 识别音频文件
使用离线模式识别音频文件:
import {
uesSherpaOnnx,
type UesSherpaOnnxOptions,
type LimeRecognizeFileOptions
} from '@/uni_modules/lime-sherpa-onnx'
// ========== ASR 离线模式初始化 ==========
// Paraformer 模型(推荐,中文识别)
// 下载地址: https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-paraformer-zh-2023-09-14.tar.bz2
// VAD 模型下载地址: https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx.tar.bz2
const factory = uesSherpaOnnx({
modelPath: '/static/sherpa-onnx-paraformer-zh-2023-09-14/model.int8.onnx',
vadModelPath: '/static/silero_vad.onnx',
tokensPath: '/static/sherpa-onnx-paraformer-zh-2023-09-14/tokens.txt',
success() {
console.log('ASR 初始化成功')
},
fail(err) {
console.log('ASR 初始化失败', err)
}
} as UesSherpaOnnxOptions)
// ========== 识别音频文件 ==========
const onRecognizeFile = () => {
factory.recognizeFile({
audioPath: '/static/test.wav',
success(res) {
console.log('识别结果:', res.text)
},
fail(err) {
console.log('识别失败', err)
}
} as LimeRecognizeFileOptions)
}
// 释放资源
factory.dispose()
1.1 使用Qwen3模型识别音频文件
Qwen3是一个基于大语言模型的ASR模型,具有更高的识别精度:
import {
uesSherpaOnnx,
type UesSherpaOnnxOptions,
type LimeRecognizeFileOptions
} from '@/uni_modules/lime-sherpa-onnx'
// ========== Qwen3 ASR 模型初始化 ==========
// 下载地址: https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-qwen3-asr-0.6B-int8-2026-03-25.tar.bz2
const qwen3Recognizer = uesSherpaOnnx({
modelType: 'qwen3',
convFrontend: '/static/sherpa-onnx-qwen3-asr-0.6B-int8-2026-03-25/conv_frontend.onnx',
encoder: '/static/sherpa-onnx-qwen3-asr-0.6B-int8-2026-03-25/encoder.int8.onnx',
decoder: '/static/sherpa-onnx-qwen3-asr-0.6B-int8-2026-03-25/decoder.int8.onnx',
tokenizer: '/static/sherpa-onnx-qwen3-asr-0.6B-int8-2026-03-25/tokenizer',
numThreads: 3, // 推荐使用3个线程
success() {
console.log('Qwen3 ASR 初始化成功')
},
fail(err) {
console.log('Qwen3 ASR 初始化失败', err)
}
} as UesSherpaOnnxOptions)
// ========== 识别音频文件 ==========
const onRecognizeFile = () => {
qwen3Recognizer.recognizeFile({
audioPath: '/static/test.wav',
success(res) {
console.log('识别结果:', res.text)
},
fail(err) {
console.log('识别失败', err)
}
} as LimeRecognizeFileOptions)
}
// 释放资源
qwen3Recognizer.dispose()
2. 实时语音识别
使用在线模式进行实时语音识别:
import {
uesSherpaOnnx,
type UesSherpaOnnxOptions,
type LimeStartRecorderOptions
} from '@/uni_modules/lime-sherpa-onnx'
// 创建背景音频管理器
const bgAudioManager = uni.getBackgroundAudioManager()
// ========== ASR 在线模式初始化 ==========
// Zipformer 流式模型(中英双语)
// 下载地址: https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
const streaming = uesSherpaOnnx({
encoder: '/static/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.int8.onnx',
decoder: '/static/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.onnx',
joiner: '/static/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.onnx',
tokensPath: '/static/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/tokens.txt',
modelType: 'zipformer',
mode: 'online',
success() {
console.log('在线模式初始化成功')
},
fail(err) {
console.log('初始化失败', err)
}
} as UesSherpaOnnxOptions)
// 注册录音监听
streaming.onRecorder((res) => {
console.log('实时识别结果:', res.text)
})
// ========== 开始录音 ==========
const onStart = () => {
streaming.startRecorder({
success() {
console.log('开始录音成功')
},
fail(err) {
console.log('开始录音失败', err)
}
} as LimeStartRecorderOptions)
}
// ========== 停止录音 ==========
const onStop = () => {
streaming.stopRecorder((res) => {
console.log('音频临时文件路径:', res.tempFilePath)
bgAudioManager.title = '录音'
bgAudioManager.src = res.tempFilePath
bgAudioManager.play()
})
}
// 取消监听
streaming.offRecorder()
// 释放资源
streaming.dispose()
3. 一次性生成语音
生成完整的语音文件并播放:
import {
useSherpaOnnxTts,
type UseSherpaOnnxTtsOptions,
type LimeTtsGenerateOptions
} from '@/uni_modules/lime-sherpa-onnx'
// 创建背景音频管理器
const bgAudioManager = uni.getBackgroundAudioManager()
// ========== TTS 初始化 ==========
// VITS 模型初始化(推荐,模型较小)
// 下载地址: https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-melo-tts-zh_en.tar.bz2
const tts = useSherpaOnnxTts({
model: '/static/tts-models/vits-melo-tts-zh_en/model.onnx',
lexicon: '/static/tts-models/vits-melo-tts-zh_en/lexicon.txt',
tokens: '/static/tts-models/vits-melo-tts-zh_en/tokens.txt',
modelType: 'vits',
numThreads: 2,
maxNumSentences: 1,
success() {
console.log('TTS 初始化成功')
},
fail(err) {
console.log('TTS 初始化失败', err)
}
} as UseSherpaOnnxTtsOptions)
// ========== 一次性生成 ==========
const onTts = () => {
tts.generate({
text: '你好,这是一个中文语音合成测试。',
sid: 0,
speed: 1.0,
success(res) {
console.log('TTS 生成成功')
console.log('临时文件路径:', res.tempFilePath)
console.log('采样率:', res.sampleRate)
console.log('时长:', res.duration, '秒')
// 使用背景音频播放生成的音频
bgAudioManager.title = '语音合成'
bgAudioManager.singer = 'TTS'
bgAudioManager.src = res.tempFilePath
bgAudioManager.play()
},
fail(err) {
console.log('TTS 生成失败', err)
}
} as LimeTtsGenerateOptions)
}
// 释放资源
tts.dispose()
4. 流式生成语音(边生成边播放)
流式生成可以实现边生成边播放的效果,适用于长文本:
import {
useSherpaOnnxTts,
type UseSherpaOnnxTtsOptions,
type LimeTtsStreamOptions,
type LimeTtsStreamTask
} from '@/uni_modules/lime-sherpa-onnx'
import { getStreamAudioPlayer, type StreamAudioPlayer } from '@/uni_modules/lime-stream-audio'
let streamTask: LimeTtsStreamTask | null = null
const isStreamRunning = ref(false)
// 创建背景音频管理器
const bgAudioManager = uni.getBackgroundAudioManager()
// ========== TTS 初始化 ==========
// VITS 模型初始化(推荐,模型较小)
// 下载地址: https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-melo-tts-zh_en.tar.bz2
const tts = useSherpaOnnxTts({
model: '/static/tts-models/vits-melo-tts-zh_en/model.onnx',
lexicon: '/static/tts-models/vits-melo-tts-zh_en/lexicon.txt',
tokens: '/static/tts-models/vits-melo-tts-zh_en/tokens.txt',
modelType: 'vits',
numThreads: 2,
maxNumSentences: 1, // 每个批次生成1个句子,这样长文本会分成多个片段
success() {
console.log('TTS 初始化成功')
},
fail(err) {
console.log('TTS 初始化失败', err)
}
} as UseSherpaOnnxTtsOptions)
// float32 转 PCM16
const floatToPcm16 = (samples: number[]): ArrayBuffer => {
const buffer = new ArrayBuffer(samples.length * 2)
const view = new DataView(buffer)
for (let i = 0; i < samples.length; i++) {
let sample = samples[i]
if (sample > 1.0) sample = 1.0
if (sample < -1.0) sample = -1.0
view.setInt16(i * 2, Math.floor(sample * 32767.0), true)
}
return buffer
}
// 创建流式播放器
const streamAudioPlayer = getStreamAudioPlayer()
// ========== 流式生成 ==========
const onTtsStream = () => {
console.log('开始流式生成和播放')
const sampleRate = tts.getSampleRate()
console.log('TTS 采样率:', sampleRate)
if (sampleRate <= 0) {
console.log('TTS 未初始化完成')
return
}
streamAudioPlayer.stop()
streamAudioPlayer.setSampleRate(sampleRate)
streamAudioPlayer.onStarted(() => console.log('播放开始'))
streamAudioPlayer.onCompleted(() => console.log('播放完成'))
streamAudioPlayer.onError((error) => console.error('播放错误:', error))
let segmentCount = 0
let totalSamples = 0
streamAudioPlayer.play()
const task = tts.generateStream({
text: '沁园春·雪 北国风光,千里冰封,万里雪飘。望长城内外,惟余莽莽;大河上下,顿失滔滔。山舞银蛇,原驰蜡象,欲与天公试比高。须晴日,看红装素裹,分外妖娆。江山如此多娇,引无数英雄竞折腰。惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。一代天骄,成吉思汗,只识弯弓射大雕。俱往矣,数风流人物,还看今朝。',
sid: 0,
speed: 1.0,
fail: (err) => {
console.log('流式生成失败', err)
streamTask = null
isStreamRunning.value = false
}
} as LimeTtsStreamOptions)
streamTask = task
isStreamRunning.value = true
task.onProgress((result) => {
segmentCount++
totalSamples += result.samples.length
console.log('===== 音频片段 ' + segmentCount + ' =====')
console.log('样本数量:', result.samples.length)
console.log('累计样本:', result.sampleCount)
const pcmData = floatToPcm16(result.samples)
streamAudioPlayer.writeData(pcmData)
})
task.onComplete((result) => {
console.log('===== 流式生成完成 =====')
console.log('总片段数:', segmentCount)
console.log('总样本数:', totalSamples)
console.log('临时文件:', result.tempFilePath)
streamAudioPlayer.finishWrite()
// 使用背景音频播放生成的音频
setTimeout(() => {
bgAudioManager.title = '语音合成'
bgAudioManager.singer = 'TTS'
bgAudioManager.src = result.tempFilePath
bgAudioManager.play()
}, 2000)
streamTask = null
isStreamRunning.value = false
})
}
// 暂停流式生成
const onPauseStream = () => {
if (streamTask != null) {
console.log('暂停流式生成')
streamTask!.pause()
}
}
// 继续流式生成
const Stream = () => {
if (streamTask != null) {
console.log('继续流式生成')
streamTask!.resume()
}
}
// 取消流式生成
const Stream = () => {
if (streamTask != null) {
console.log('取消流式生成')
streamTask!.abort()
}
}
// 释放资源
tts.dispose()
平台限制说明:在HarmonyOS平台上,流式TTS的暂停(pause)和继续(resume)功能可能不起作用,这是由于HarmonyOS平台的Worker线程限制导致的。
快速预览
导入插件后,可以直接使用以下标签查看演示效果:
<!-- 代码位于 uni_modules/lime-sherpa-onnx/components/lime-sherpa-onnx -->
<lime-sherpa-onnx />
插件标签说明
| 标签名 | 说明 |
|---|---|
lime-sherpa-onnx |
演示标签 |
API文档
ASR API
UesSherpaOnnxOptions 初始化选项
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| modelPath | 主模型路径(兼容paraformer/nemo_ctc等单模型) | string | - |
| model | 主模型路径(同modelPath) | string | - |
| encoder | 编码器模型路径/文件名 | string | - |
| decoder | 解码器模型路径/文件名 | string | - |
| joiner | joiner模型路径/文件名 | string | - |
| preprocessor | Moonshine预处理模型 | string | - |
| uncachedDecoder | Moonshine非缓存解码器 | string | - |
| cachedDecoder | Moonshine缓存解码器 | string | - |
| convFrontend | Qwen3前端卷积模型路径 | string | - |
| tokenizer | Qwen3 tokenizer路径 | string | - |
| tokensPath | tokens文件路径 | string | 'tokens.txt' |
| tokens | tokens文件路径(同tokensPath) | string | 'tokens.txt' |
| vadModelPath | VAD模型路径 | string | - |
| vad | VAD模型路径(同vadModelPath) | string | - |
| provider | 提供者 | string | - |
| sampleRate | 采样率 | number | 16000 |
| numThreads | 线程数 | number | 1 |
| modelType | 模型类型 | ModelType | 'paraformer' |
| mode | 运行模式 | 'online' | 'offline' | 'offline' |
| enableVad | 是否启用VAD | boolean | false |
| decodingMethod | 解码方法 | string | 'greedy_search' |
| maxActivePaths | 最大活跃路径数 | number | 4 |
| hotwordsPath | 热词文件路径 | string | - |
| hotwordsScore | 热词得分权重 | number | 1.5 |
| vadMinSilenceDuration | VAD最小静音时长(秒) | number | 0.5 |
| vadMinSpeechDuration | VAD最小语音时长(秒) | number | 0.25 |
| vadThreshold | VAD阈值 | number | 0.5 |
| vadWindowSize | VAD窗口大小 | number | 512 |
| useRawfile | 【鸿蒙专属】是否使用rawfile目录 | boolean | false |
| success | 初始化成功回调 | () => void | - |
| fail | 初始化失败回调 | (error: LimeSherpaOnnxFail) => void | - |
支持的 ASR 模型类型 (ModelType)
| 模型类型 | 说明 |
|---|---|
| paraformer | Paraformer模型 |
| transducer | Transducer模型 |
| whisper | Whisper模型 |
| nemo_ctc | NeMo CTC模型(IOS 不支持离线) |
| sense_voice | SenseVoice模型 |
| zipformer | Zipformer模型 |
| zipformer2 | Zipformer2模型 |
| qwen3 | Qwen3 ASR模型(需要convFrontend、encoder、decoder、tokenizer) |
LimeSherpaOnnxRecognizer 识别器方法
| 方法名 | 说明 | 参数 | 返回值 |
|---|---|---|---|
| recognizeFile | 识别音频文件 | options: LimeRecognizeFileOptions | - |
| onRecorder | 注册录音监听器 | callback: LimeRecorderCallback | - |
| offRecorder | 取消录音监听器 | - | - |
| startRecorder | 开始录音并实时识别 | options: LimeStartRecorderOptions | - |
| stopRecorder | 停止录音 | - | - |
| dispose | 释放资源 | - | - |
LimeRecognizeFileOptions 识别选项
| 参数 | 说明 | 类型 | 必填 |
|---|---|---|---|
| audioPath | 音频文件路径 | string | 是 |
| minDurationForVad | 最小使用VAD的音频时长(秒) | number | 否 |
| success | 识别成功回调 | (result: LimeRecognizeResult) => void | 否 |
| fail | 识别失败回调 | (error: LimeSherpaOnnxFail) => void | 否 |
LimeRecognizeResult 识别结果
| 属性 | 说明 | 类型 |
|---|---|---|
| text | 完整识别文本 | string |
| segments | 文本片段数组 | string[] |
TTS API
UseSherpaOnnxTtsOptions TTS初始化选项
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| model | VITS 模型路径 | string | - |
| lexicon | 词典文件路径 | string | - |
| tokens | tokens文件路径 | string | 'tokens.txt' |
| dataDir | 数据目录路径 | string | - |
| acousticModel | Matcha 声学模型路径 | string | - |
| vocoder | Matcha 声码器路径 | string | - |
| voices | Kokoro/Kitten 说话人声音文件路径 | string | - |
| modelType | 模型类型 | TtsModelType | 'vits' |
| numThreads | 线程数 | number | 2 |
| maxNumSentences | 最大句子数(影响流式生成粒度) | number | 1 |
| silenceScale | 静音缩放 | number | 0.2 |
| success | 初始化成功回调 | () => void | - |
| fail | 初始化失败回调 | (error: LimeSherpaOnnxFail) => void | - |
支持的 TTS 模型类型 (TtsModelType)
| 模型类型 | 说明 | 推荐模型 |
|---|---|---|
| vits | VITS 模型 | vits-melo-tts-zh_en(中英双语) |
| matcha | Matcha 模型 | matcha-icefall-zh-baker |
| kokoro | Kokoro 模型 | kokoro-en-v0_19 |
| kitten | Kitten 模型 | - |
| Pocket 模型 | - | |
| supertonic | Supertonic 模型 | - |
| zipvoice | ZipVoice 模型 | sherpa-onnx-zipvoice-zh-en |
LimeSherpaOnnxTts TTS实例方法
| 方法名 | 说明 | 参数 | 返回值 |
|---|---|---|---|
| getSampleRate | 获取采样率 | - | number |
| getNumSpeakers | 获取说话人数量 | - | number |
| generate | 一次性生成语音 | options: LimeTtsGenerateOptions | - |
| generateStream | 流式生成语音 | options: LimeTtsStreamOptions | LimeTtsStreamTask |
| dispose | 释放资源 | - | - |
LimeTtsGenerateOptions 生成选项
| 参数 | 说明 | 类型 | 必填 |
|---|---|---|---|
| text | 要转换的文本 | string | 是 |
| sid | 说话人 ID | number | 否(默认 0) |
| speed | 语速 | number | 否(默认 1.0) |
| success | 成功回调 | (result: LimeTtsResult) => void | 否 |
| fail | 失败回调 | (error: LimeSherpaOnnxFail) => void | 否 |
LimeTtsStreamOptions 流式生成选项
| 参数 | 说明 | 类型 | 必填 |
|---|---|---|---|
| text | 要转换的文本 | string | 是 |
| sid | 说话人 ID | number | 否(默认 0) |
| speed | 语速 | number | 否(默认 1.0) |
| fail | 失败回调 | (error: LimeSherpaOnnxFail) => void | 否 |
LimeTtsStreamTask 流式任务方法
| 方法名 | 说明 | 参数 | 返回值 |
|---|---|---|---|
| isRunning | 检查任务是否仍在运行 | - | boolean |
| pause | 暂停生成 | - | - |
| resume | 继续生成 | - | - |
| abort | 取消生成 | - | - |
| onProgress | 注册进度回调 | (callback: (result: LimeTtsStreamProgressResult) => void) | - |
| onComplete | 注册完成回调 | (callback: (result: LimeTtsResult) => void) | - |
LimeTtsResult 生成结果
| 属性 | 说明 | 类型 |
|---|---|---|
| tempFilePath | 生成的音频临时文件路径 | string |
| samples | 音频样本数据(归一化到 [-1, 1]) | number[] |
| sampleRate | 采样率 | number |
| duration | 音频时长(秒) | number |
LimeTtsStreamProgressResult 流式进度结果
| 属性 | 说明 | 类型 |
|---|---|---|
| samples | 当前片段音频样本数据 | number[] |
| segmentCount | 当前片段序号 | number |
| sampleCount | 累计样本数 | number |
错误处理
插件可能会抛出以下错误:
| 错误码 | 说明 |
|---|---|
| 9010001 | 无效音频文件路径 |
| 9010002 | 无法读取音频文件 |
| 9010003 | 初始化失败 |
| 9010004 | 识别失败 |
| 9010005 | 模型加载失败 |
| 9010006 | VAD模型加载失败 |
| 9010007 | Paraformer模型加载失败 |
| 9010008 | Tokens文件加载失败 |
| 9010009 | 录音权限被拒绝 |
| 9010010 | 未注册录音监听器 |
| 9010011 | 未注册录音监听器 |
| 9010012 | TTS 模型文件不存在 |
| 9010013 | TTS 初始化失败 |
| 9010014 | TTS 生成失败 |
常见问题
ASR 相关
- 确保模型文件路径正确,且模型文件已正确放置在指定目录
- 音频文件格式必须为WAV格式,且采样率需与模型要求一致(通常为16kHz)
- 实时识别功能在iOS上可能表现不如安卓稳定,建议进行充分测试
- 大型模型可能会占用较多内存,请根据目标设备性能选择适当的模型
TTS 相关
- TTS 模型下载地址:TTS模型下载
- 推荐使用 vits-melo-tts-zh_en 模型,支持中英双语,模型较小
- 流式生成时,
maxNumSentences参数影响生成粒度,值越小生成越频繁 - 暂停/恢复功能依赖于底层模型实现,部分模型可能不支持真正的暂停
资源下载
📚 SherpaOnnx官方详细文档和模型请访问以下站点:
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
| 支付宝赞助 | 微信赞助 |
|---|---|
![]() |
![]() |

收藏人数:
购买源码授权版(
试用
赞赏(1)


下载 70507
赞赏 561
下载 11535926
赞赏 1903
赞赏
京公网安备:11010802035340号