更新记录

1.0.0(2025-12-26)

讯飞语音SDK uni-app原生插件 集成科大讯飞语音能力,支持Android/iOS双平台。功能包括:


平台兼容性

其他

多语言 暗黑模式 宽屏模式

xf-speech 讯飞语音 UTS 插件

集成科大讯飞语音能力的 UTS 插件,支持 Android/iOS 双平台。

功能特性

功能 说明 支持平台
🎤 语音听写 (IAT) 实时将语音转换为文字,支持多语种 Android / iOS
🔊 语音合成 (TTS) 将文字转换为自然语音播放 Android / iOS
📝 语音评测 (ISE) 语音发音评分,支持中英文,支持录音回放 Android / iOS

快速开始

1. 引入插件

import {
  initialize,
  destroy,
  startIat,
  stopIat,
  cancelIat,
  onIatResult,
  onIatError,
  onIatVolume,
  startTts,
  pauseTts,
  resumeTts,
  stopTts,
  onTtsProgress,
  onTtsComplete,
  onTtsError,
  startIse,
  stopIse,
  cancelIse,
  onIseResult,
  onIseError,
  onIseVolume
} from '@/uni_modules/xf-speech'

2. 初始化 SDK

initialize('你的AppID', (res) => {
    if (res.success) {
        console.log('初始化成功');
    } else {
        console.log('初始化失败:', res.errorDescription);
    }
});

⚠️ AppID 需要在 讯飞开放平台 注册并创建应用获取

📖 详细开发文档请参考:讯飞开放平台文档中心

3. 销毁 SDK

destroy((res) => {
    console.log('SDK已销毁');
});

API 文档

语音听写 (IAT)

开始听写

startIat({
    language: 'zh_cn',      // 语言:zh_cn(中文), en_us(英文), ja_jp(日语)等
    accent: 'mandarin',     // 方言:mandarin(普通话)
    vad_bos: '4000',        // 前端点超时(ms)
    vad_eos: '1000',        // 后端点超时(ms)
    ptt: '1'                // 标点符号:0(无), 1(有)
}, (res) => {
    if (res.success) {
        console.log('开始听写');
    }
});

停止听写

stopIat((res) => {});

取消听写

cancelIat((res) => {});

监听结果

// 识别结果回调
onIatResult((res) => {
    console.log('识别结果:', res.result);
    console.log('是否最终结果:', res.isLast);
});

// 错误回调
onIatError((err) => {
    console.log('错误:', err.errorCode, err.errorDescription);
});

// 音量回调
onIatVolume((res) => {
    console.log('音量:', res.volume);
});

语音合成 (TTS)

开始合成

startTts('要合成的文本内容', {
    voicer: 'xiaoyan',      // 发音人
    speed: '50',            // 语速 0-100
    pitch: '50',            // 音调 0-100
    volume: '50'            // 音量 0-100
}, (res) => {
    if (res.success) {
        console.log('开始合成');
    }
});

发音人列表

发音人 名称 特点
xiaoyan 小燕 中文女声
aisjiuxu 许久 中文男声
aisxping 小萍 中文女声
aisjinger 小婧 中文女声
aisbabyxu 许小宝 童声

控制播放

// 暂停
pauseTts((res) => {});

// 继续
resumeTts((res) => {});

// 停止
stopTts((res) => {});

监听事件

// 播放进度
onTtsProgress((res) => {
    console.log('进度:', res.progress);
});

// 播放完成
onTtsComplete((res) => {
    console.log('播放完成');
});

// 错误回调
onTtsError((err) => {
    console.log('错误:', err.errorDescription);
});

语音评测 (ISE)

开始评测

startIse('要评测的文本', {
    language: 'zh_cn',           // 语言:zh_cn(中文), en_us(英文)
    category: 'read_sentence',   // 评测类型
    result_level: 'complete',    // 结果级别
    vad_bos: '5000',             // 前端点超时
    vad_eos: '1800'              // 后端点超时
}, (res) => {
    if (res.success) {
        console.log('开始评测');
    }
});

评测类型

类型 说明
read_sentence 句子评测
read_word 词语评测
read_chapter 篇章评测
read_syllable 音节评测

停止/取消评测

stopIse((res) => {});
cancelIse((res) => {});

监听结果

// 评测结果(XML格式)
onIseResult((res) => {
    console.log('评测结果:', res.result);
    console.log('是否最终结果:', res.isLast);
    if (res.isLast && res.audioPath) {
        console.log('录音文件路径:', res.audioPath);
        // 可使用 uni.createInnerAudioContext() 播放录音
    }
});

// 错误回调
onIseError((err) => {
    console.log('错误:', err.errorDescription);
});

// 音量回调
onIseVolume((res) => {
    console.log('音量:', res.volume);
});

播放录音回放

if (res.audioPath) {
    const audioContext = uni.createInnerAudioContext();
    audioContext.src = res.audioPath;
    audioContext.play();
}

类型定义

// 通用回调结果
type XFResult = {
  success: boolean
  errorCode?: number
  errorDescription?: string
}

// 语音听写参数
type IatOptions = {
  language?: string    // 语言
  accent?: string      // 方言
  vad_bos?: string     // 前端点超时(ms)
  vad_eos?: string     // 后端点超时(ms)
  ptt?: string         // 标点符号
}

// 语音合成参数
type TtsOptions = {
  voicer?: string      // 发音人
  speed?: string       // 语速
  pitch?: string       // 音调
  volume?: string      // 音量
}

// 语音评测参数
type IseOptions = {
  language?: string      // 语言
  category?: string      // 评测类型
  result_level?: string  // 结果级别
  vad_bos?: string       // 前端点超时
  vad_eos?: string       // 后端点超时
}

权限配置

Android

插件已自动配置以下权限:

  • android.permission.RECORD_AUDIO - 录音权限
  • android.permission.INTERNET - 网络权限
  • android.permission.ACCESS_NETWORK_STATE - 网络状态权限
  • android.permission.ACCESS_WIFI_STATE - WiFi状态权限
  • android.permission.READ_EXTERNAL_STORAGE - 存储读取权限
  • android.permission.WRITE_EXTERNAL_STORAGE - 存储写入权限

iOS

manifest.json 中配置麦克风权限描述:

{
    "app-plus": {
        "distribute": {
            "ios": {
                "privacyDescription": {
                    "NSMicrophoneUsageDescription": "需要使用麦克风进行语音识别和评测"
                }
            }
        }
    }
}

错误码说明

错误码 说明 解决方案
10102 AppID 无效 检查 AppID 是否正确
10201 网络连接异常 检查网络连接和权限配置
10301 录音初始化失败 检查录音权限
11201 无有效结果 请清晰发音重试
11301 评测文本为空 请输入评测文本

📖 完整错误码列表请参考:讯飞开放平台错误码查询


注意事项

  1. AppID 绑定:请确保 AppID 与应用包名/Bundle ID 匹配
  2. 录音权限:首次使用需要用户授权录音权限
  3. 网络要求:在线识别需要网络连接
  4. 平台差异:部分高级功能可能存在平台差异

技术支持

如有问题,请提交 Issue 或联系开发者。

License

MIT License

隐私、权限声明

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

录音权限

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

插件不采集任何数据

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

暂无用户评论。