主题
LimeTts
一个基于原生系统自带的文本转语音(TTS)插件,支持多平台(安卓、iOS、鸿蒙),提供丰富的语音合成与播报功能,包括多语种支持、自定义语速音量、事件监听等特性。
文档链接
📚 插件详细文档请访问以下站点:
安装方法
代码演示
基础用法
简单的文本朗读功能实现:
html
<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实例,这是插件的主要入口方法
ts
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 类型
ts
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 类型
ts
type SpeechCallback = (event: UTSJSONObject) => void;功能特点
- 支持多平台:兼容安卓、iOS、鸿蒙平台
- 多语种支持:支持中文、英文等多种语言
- 自定义语音参数:可调整语速、音量、音调
- 丰富的事件监听:支持开始、结束、错误、停止等事件
- 灵活的播报控制:支持暂停、恢复、停止等操作
- 离线模式:支持离线语音合成,无需网络连接
- 多种音色选择:提供多种男女声音色
- 完善的TypeScript类型支持
常见问题
- APP端需要自定义基座才能使用
- 不同平台支持的音色可能有所不同
- 在线模式目前暂不支持
- 建议使用try-catch捕获可能的错误
- 页面卸载时请调用destroy方法释放资源
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
| 支付宝赞助 | 微信赞助 |
|---|---|
![]() | ![]() |

