更新记录

0.0.1(2026-01-30) 下载此版本

初始化


平台兼容性

uni-app(4.76)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × × - - 6.0 12 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × - × ×

uni-app x(4.76)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 6.0 12 × ×

ak-tts

原生语音合成插件 - 支持 Android/iOS 双平台,无需自定义基座

功能特性

  • 原生语音合成(TTS)- Android/iOS 双平台支持
  • 内置队列播报功能
  • 语音状态监听
  • 灵活的队列模式控制

快速开始

导入插件

根据目标平台导入对应的实现:

Android:

import { createTTSManager } from '@/uni_modules/ak-tts/utssdk/app-android/index.uts';

iOS:

import { createTTSManager } from '@/uni_modules/ak-tts/utssdk/app-ios/index.uts';

语音合成(TTS)

uni-app (Android)

import { createTTSManager } from '@/uni_modules/ak-tts/utssdk/app-android/index.uts';

// 创建 TTS 管理器
const ttsManager = createTTSManager();

// 初始化 TTS
ttsManager.init((success) => {
    if (success) {
        console.log('TTS 初始化成功');

        // 监听语音状态
        ttsManager.addVoiceStateListener((state, utteranceId) => {
            console.log('语音状态:', state, utteranceId);
            // state: 'started' | 'completed' | 'error'
        });

        // 开始播放
        ttsManager.speak({
            text: 'Hello, 这是一个语音播报测试',
            queueMode: 'queue',
            success: () => {
                console.log('播放成功');
            },
            fail: (error) => {
                console.error('播放失败:', error);
            },
            complete: () => {
                console.log('播放完成');
            }
        });
    } else {
        console.error('TTS 初始化失败');
    }
});

uni-app (iOS)

import { createTTSManager } from '@/uni_modules/ak-tts/utssdk/app-ios/index.uts';

// 创建 TTS 管理器
const ttsManager = createTTSManager();

// 初始化 TTS
ttsManager.init((success) => {
    if (success) {
        console.log('TTS 初始化成功');

        // 监听语音状态
        ttsManager.addVoiceStateListener((state, utteranceId) => {
            console.log('语音状态:', state, utteranceId);
        });

        // 开始播放
        ttsManager.speak({
            text: 'Hello, 这是一个语音播报测试',
            queueMode: 'queue',
            success: () => {
                console.log('播放成功');
            },
            fail: (error) => {
                console.error('播放失败:', error);
            },
            complete: () => {
                console.log('播放完成');
            }
        });
    } else {
        console.error('TTS 初始化失败');
    }
});

uni-app x (Android)

import { createTTSManager } from '@/uni_modules/ak-tts/utssdk/app-android/index.uts';

const ttsManager = createTTSManager();

ttsManager.init((success: boolean): void => {
    if (success) {
        ttsManager.addVoiceStateListener((state: string, utteranceId: string): void => {
            console.log('语音状态:', state, utteranceId);
        });

        ttsManager.speak({
            text: 'Hello, 这是一个语音播报测试',
            queueMode: 'queue' as const,
            success: (): void => {
                console.log('播放成功');
            },
            fail: (error: Error): void => {
                console.error('播放失败:', error);
            },
            complete: (): void => {
                console.log('播放完成');
            }
        });
    }
});

uni-app x (iOS)

import { createTTSManager } from '@/uni_modules/ak-tts/utssdk/app-ios/index.uts';

const ttsManager = createTTSManager();

ttsManager.init((success: boolean): void => {
    if (success) {
        ttsManager.addVoiceStateListener((state: string, utteranceId: string): void => {
            console.log('语音状态:', state, utteranceId);
        });

        ttsManager.speak({
            text: 'Hello, 这是一个语音播报测试',
            queueMode: 'queue' as const,
            success: (): void => {
                console.log('播放成功');
            },
            fail: (error: Error): void => {
                console.error('播放失败:', error);
            },
            complete: (): void => {
                console.log('播放完成');
            }
        });
    }
});

高级用法

队列播报示例

import { createTTSManager } from '@/uni_modules/ak-tts';

const ttsManager = createTTSManager();

ttsManager.init((success) => {
    if (!success) return;

    // 批量播报,语音会按顺序播放
    const messages = ['第一条消息', '第二条消息', '第三条消息'];

    messages.forEach((text, index) => {
        ttsManager.speak({
            text: text,
            queueMode: 'queue', // 队列模式,确保按顺序播放
            complete: () => {
                console.log(`第 ${index + 1} 条播放完成`);
            }
        });
    });
});

Interrupt 播报示例

import { createTTSManager } from '@/uni_modules/ak-tts';

const ttsManager = createTTSManager();

ttsManager.init((success) => {
    if (!success) return;

    // 开始播报队列
    ttsManager.speak({
        text: '这是第一条很长的语音内容',
        queueMode: 'queue'
    });

    // interrupt 播报(会打断当前正在播放的语音)
    ttsManager.speak({
        text: '这是一条紧急 interrupt 播报',
        queueMode: 'interrupt' // interrupt 模式
    });
});

完全截断示例

import { createTTSManager } from '@/uni_modules/ak-tts';

const ttsManager = createTTSManager();

ttsManager.init((success) => {
    if (!success) return;

    // 添加多条到队列
    ttsManager.speak({ text: '第一条', queueMode: 'queue' });
    ttsManager.speak({ text: '第二条', queueMode: 'queue' });
    ttsManager.speak({ text: '第三条', queueMode: 'queue' });

    // 完全截断,只播放当前
    ttsManager.speak({
        text: '这是一条完全截断播报,会清空所有队列中的语音',
        queueMode: 'clear' // 清空队列,只播放当前
    });
});

语音设置示例

import { createTTSManager } from '@/uni_modules/ak-tts';

const ttsManager = createTTSManager();

ttsManager.init((success) => {
    if (!success) return;

    // 获取可用语音列表
    const voices = ttsManager.getVoices();
    console.log('可用语音:', voices);

    // 设置语速 (0.5-2.0)
    ttsManager.setSpeed(1.2);

    // 设置音调 (0.5-2.0)
    ttsManager.setPitch(1.0);

    // 如果有多个语音,可以设置特定语音
    if (voices.length > 0) {
        ttsManager.setVoice(voices[0]);
    }

    // 开始播放
    ttsManager.speak({ text: '设置完成,现在开始播放' });
});

API 参考

createTTSManager()

创建语音合成管理器实例。

返回值: TTSManager - 语音合成管理器实例

TTSManager 接口

init(callback)

初始化 TTS 引擎。

参数:

  • callback (function): 初始化回调
    • success (boolean): 初始化是否成功

speak(options)

播放语音。

参数:

  • options (object): 播放选项
    • text (string): 播放内容
    • queueMode (string): 队列模式
    • 'queue' (默认): 队列模式,按顺序播放
    • 'clear': 清空队列,只播放当前
    • 'interrupt': interrupt 模式,打断当前播放
    • success (function): 播放成功回调
    • fail (function): 播放失败回调
    • complete (function): 播放完成回调

stop()

停止当前播放并清空队列。

pause()

暂停播放。

注意: Android 平台不支持暂停,调用将停止播放。

resume()

恢复播放。

注意: Android 平台不支持恢复,需重新开始。

setSpeed(speed)

设置语速。

参数:

  • speed (number): 语速,范围 0.5-2.0,默认 1.0

setPitch(pitch)

设置音调。

参数:

  • pitch (number): 音调,范围 0.5-2.0,默认 1.0

setVolume(volume)

设置音量。

参数:

  • volume (number): 音量,范围 0.0-1.0,默认 1.0

setVoice(voiceName)

设置语音。

参数:

  • voiceName (string): 语音名称,可通过 getVoices() 获取可用语音列表

getVoices()

获取可用语音列表。

返回值: string[] - 语音名称列表

addVoiceStateListener(listener)

添加语音状态监听器。

参数:

  • listener (function): 状态监听回调
    • state (string): 状态类型
    • 'started': 开始播放
    • 'completed': 播放完成
    • 'error': 播放错误
    • utteranceId (string): 语音任务 ID

removeVoiceStateListener(listener)

移除语音状态监听器。

参数:

  • listener (function): 要移除的监听器

shutdown()

关闭 TTS,释放资源。

平台支持

功能 Android iOS
语音合成
队列播放
interrupt 播放
完全截断
语音监听
语速设置
音调设置
音量设置
语音切换

错误码

错误码 说明
9010001 TTS 初始化失败
9010002 语音播放失败
9010003 语音设置失败

版本要求

  • HBuilderX 3.96+
  • uni-app x 项目(uni-app vue2/vue3项目也支持,编译有报错百度即可)

注意事项

  1. 首次使用需初始化: 必须先调用 init() 方法初始化 TTS 引擎
  2. 资源释放: 页面卸载时建议调用 shutdown() 释放资源
  3. 队列模式选择:
    • queue: 适合顺序播放多个语音
    • interrupt: 适合紧急插播,会打断当前
    • clear: 适合只播放当前,清空队列

开发文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。