Skip to content

LimeTts

一个基于原生系统自带的文本转语音(TTS)插件,支持多平台(安卓、iOS、鸿蒙),提供丰富的语音合成与播报功能,包括多语种支持、自定义语速音量、事件监听等特性。

文档链接

📚 插件详细文档请访问以下站点:

安装方法

  1. 在uni-app插件市场入口 中搜索并导入lime-tts
  2. 导入后在页面引入相关方法

代码演示

基础用法

简单的文本朗读功能实现:

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 实例方法

方法名语法说明
speakspeak(text: string): void;
speak(text: string, options: SpeakOptions): void;
朗读指定文本,可配置朗读参数
stopstop(): void;停止当前朗读
pausepause(): void;暂停当前朗读
resumeresume(): void;恢复暂停的朗读
getVoicesgetVoices(): Promise<VoiceInfo[]>;获取可用语音列表,返回Promise
getStatusgetStatus(): SpeechStatus;获取当前语音状态
destroydestroy(): void;销毁TTS实例,释放资源
onon(event: 'start' | 'end' | 'error' | 'stop', callback: SpeechCallback): void;监听TTS事件
offoff(event: 'start' | 'end' | 'error' | 'stop'): void;
off(event: 'start' | 'end' | 'error' | 'stop', callback: SpeechCallback): void;
移除事件监听

SpeakOptions 选项

参数类型必填说明
speednumber语速,支持范围 [0.5-2],默认值为 1
volumenumber音量,支持范围 [0-2],默认值为 1
pitchnumber音调,支持范围 [0.5-2],默认值为 1
languageLanguage语境,播放阿拉伯数字用的语种,默认 "zh-CN"
audioTypestring音频类型,当前仅支持 "pcm",默认 "pcm"
playTypenumber合成类型,0:仅合成不播报,1:合成与播报,默认 1
soundChannelnumber播报通道,默认 3(语音助手通道)
queueModenumber播报模式,0:排队模式,1:抢占模式,默认 0
personnumber音色

数据类型定义

Language 类型

ts
type Language = 'zh-CN' | 'en-US';

SpeakOptions 接口

属性类型必填说明
speednumber语速,支持范围 [0.5-2],默认值为 1
volumenumber音量,支持范围 [0-2],默认值为 1
pitchnumber音调,支持范围 [0.5-2],默认值为 1
languageLanguage语境,播放阿拉伯数字用的语种,默认 "zh-CN"
audioTypestring音频类型,当前仅支持 "pcm",默认 "pcm"
playTypenumber合成类型,0:仅合成不播报,1:合成与播报,默认 1
soundChannelnumber播报通道,默认 3(语音助手通道)
queueModenumber播报模式,0:排队模式,1:抢占模式,默认 0
personnumber音色

VoiceInfo 接口

属性类型说明
languageLanguage语种
personnumber音色ID
namestring音色名称
gender'male' | 'female'性别
descriptionstring音色描述
status'available' | 'downloadable' | 'unavailable'状态

SpeechStatus 类型

说明
'idle'空闲状态
'speaking'正在朗读
'paused'已暂停
'uninitialized'未初始化

SpeechCallback 类型

ts
type SpeechCallback = (event: UTSJSONObject) => void;

功能特点

  • 支持多平台:兼容安卓、iOS、鸿蒙平台
  • 多语种支持:支持中文、英文等多种语言
  • 自定义语音参数:可调整语速、音量、音调
  • 丰富的事件监听:支持开始、结束、错误、停止等事件
  • 灵活的播报控制:支持暂停、恢复、停止等操作
  • 离线模式:支持离线语音合成,无需网络连接
  • 多种音色选择:提供多种男女声音色
  • 完善的TypeScript类型支持

常见问题

  • APP端需要自定义基座才能使用
  • 不同平台支持的音色可能有所不同
  • 在线模式目前暂不支持
  • 建议使用try-catch捕获可能的错误
  • 页面卸载时请调用destroy方法释放资源

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者:

支付宝赞助微信赞助

源代码

组件源码