更新记录
0.0.1(2025-11-03)
下载此版本
平台兼容性
uni-app(4.81)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
- |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(4.81)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
√ |
- |
√ |
- |
lime-tts
一个基于原生系统自带的文本转语音(TTS)插件,支持多平台(安卓、iOS、鸿蒙),提供丰富的语音合成与播报功能,包括多语种支持、自定义语速音量、事件监听等特性。
文档链接
📚 插件详细文档请访问以下站点:
安装方法
- 在uni-app插件市场中搜索并导入
lime-tts
- 导入后在页面引入相关方法
代码演示
基础用法
简单的文本朗读功能实现:
<template>
<view style="padding: 30rpx 0;">
<button type="primary" @click="startSpeak">开始朗读</button>
<button type="default" @click="pauseSpeak">暂停朗读</button>
<button type="default" @click="resumeSpeak">恢复朗读</button>
<button type="warn" @click="stopSpeak">停止朗读</button>
</view>
</template>
<script setup lang="ts">
// 导入我们开发的 TTS 工具函数
import { useTTS } from '@/uni_modules/lime-tts';
// 创建 TTS 实例
const tts = useTTS();
// 事件处理函数
const handleStart = (event: any) => {
console.log('语音播放开始');
};
const handleEnd = (event: any) => {
console.log('语音播放结束');
};
const handleError = (event: any) => {
console.error('语音播放错误:', event);
};
// 语音控制函数
const startSpeak = () => {
tts.speak('欢迎使用 Lime TTS 插件!');
};
const pauseSpeak = () => {
tts.pause();
};
const resumeSpeak = () => {
tts.resume();
};
const stopSpeak = () => {
tts.stop();
};
// 生命周期
onMounted(() => {
// 注册事件监听器
tts.on('start', handleStart);
tts.on('end', handleEnd);
tts.on('error', handleError);
});
onUnmounted(() => {
// 移除事件监听器并销毁实例
tts.off('start', handleStart);
tts.off('end', handleEnd);
tts.off('error', handleError);
tts.destroy();
});
</script>
API文档
useTTS 方法
创建TTS实例,这是插件的主要入口方法
import { useTTS } from '@/uni_modules/lime-tts';
// 创建TTS实例
const tts = useTTS();
TTS 实例方法
| 方法名 |
语法 |
说明 |
| speak |
speak(text: string): void;
speak(text: string, options: SpeakOptions): void; |
朗读指定文本,可配置朗读参数 |
| stop |
stop(): void; |
停止当前朗读 |
| pause |
pause(): void; |
暂停当前朗读 |
| resume |
resume(): void; |
恢复暂停的朗读 |
| getVoices |
getVoices(): Promise<VoiceInfo[]>; |
获取可用语音列表,返回Promise |
| getStatus |
getStatus(): SpeechStatus; |
获取当前语音状态 |
| destroy |
destroy(): void; |
销毁TTS实例,释放资源 |
| on |
on(event: 'start' \| 'end' \| 'error' \| 'stop', callback: SpeechCallback): void; |
监听TTS事件 |
| off |
off(event: 'start' \| 'end' \| 'error' \| 'stop'): void;
off(event: 'start' \| 'end' \| 'error' \| 'stop', callback: SpeechCallback): void; |
移除事件监听 |
SpeakOptions 选项
| 参数 |
类型 |
必填 |
说明 |
| speed |
number |
否 |
语速,支持范围 [0.5-2],默认值为 1 |
| volume |
number |
否 |
音量,支持范围 [0-2],默认值为 1 |
| pitch |
number |
否 |
音调,支持范围 [0.5-2],默认值为 1 |
| language |
Language |
否 |
语境,播放阿拉伯数字用的语种,默认 "zh-CN" |
| audioType |
string |
否 |
音频类型,当前仅支持 "pcm",默认 "pcm" |
| playType |
number |
否 |
合成类型,0:仅合成不播报,1:合成与播报,默认 1 |
| soundChannel |
number |
否 |
播报通道,默认 3(语音助手通道) |
| queueMode |
number |
否 |
播报模式,0:排队模式,1:抢占模式,默认 0 |
| person |
number |
否 |
音色 |
数据类型定义
Language 类型
type Language = 'zh-CN' | 'en-US';
SpeakOptions 接口
| 属性 |
类型 |
必填 |
说明 |
| speed |
number |
否 |
语速,支持范围 [0.5-2],默认值为 1 |
| volume |
number |
否 |
音量,支持范围 [0-2],默认值为 1 |
| pitch |
number |
否 |
音调,支持范围 [0.5-2],默认值为 1 |
| language |
Language |
否 |
语境,播放阿拉伯数字用的语种,默认 "zh-CN" |
| audioType |
string |
否 |
音频类型,当前仅支持 "pcm",默认 "pcm" |
| playType |
number |
否 |
合成类型,0:仅合成不播报,1:合成与播报,默认 1 |
| soundChannel |
number |
否 |
播报通道,默认 3(语音助手通道) |
| queueMode |
number |
否 |
播报模式,0:排队模式,1:抢占模式,默认 0 |
| person |
number |
否 |
音色 |
VoiceInfo 接口
| 属性 |
类型 |
说明 |
| language |
Language |
语种 |
| person |
number |
音色ID |
| name |
string |
音色名称 |
| gender |
'male' | 'female' |
性别 |
| description |
string |
音色描述 |
| status |
'available' | 'downloadable' | 'unavailable' |
状态 |
SpeechStatus 类型
| 值 |
说明 |
| 'idle' |
空闲状态 |
| 'speaking' |
正在朗读 |
| 'paused' |
已暂停 |
| 'uninitialized' |
未初始化 |
SpeechCallback 类型
type SpeechCallback = (event: UTSJSONObject) => void;
功能特点
- 支持多平台:兼容安卓、iOS、鸿蒙平台
- 多语种支持:支持中文、英文等多种语言
- 自定义语音参数:可调整语速、音量、音调
- 丰富的事件监听:支持开始、结束、错误、停止等事件
- 灵活的播报控制:支持暂停、恢复、停止等操作
- 离线模式:支持离线语音合成,无需网络连接
- 多种音色选择:提供多种男女声音色
- 完善的TypeScript类型支持
常见问题
- APP端需要自定义基座才能使用
- 不同平台支持的音色可能有所不同
- 在线模式目前暂不支持
- 建议使用try-catch捕获可能的错误
- 页面卸载时请调用destroy方法释放资源
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
| 支付宝赞助 |
微信赞助 |
 |
 |