更新记录

1.0.0(2026-03-03)

  • 语音识别、语音和成插件

平台兼容性

uni-app(4.81)

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

uni-app x(4.81)

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

其他

多语言 暗黑模式 宽屏模式
× ×

科大讯飞离线语音合成、离线语音合成UTS插件

开发文档

AIkit通用XTTS合成 Android SDK 文档AIkit通用XTTS合成 iOS SDK 文档AIkit 离线语音听写 Android SDK 文档, 错误码查询科大讯飞控制台创建应用获取, 离线语音听写(新版)获取appid/APISecret/APIKey, 离线语音合成(新版)获取appid/APISecret/APIKey

插件主要功能

  • 离线语音合成---iOS+Android
  • 离线语音识别---Android(后续会支持Android)
  • 由于集成了识别与合成导致插件体积较大,若只需离线合成可使用 离线合成插件

特别提醒

  • 购买本插件前,请先试用、请先试用、请先试用,并充分自测确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款;
  • 如有使用上的疑问、bug,可以进交流群联系作者;
  • 作者可承接各种插件定制;
  • 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;
  • 结合文档和示例demo集成使用;
  • 测试需要打自定义基座,测试需要打自定义基座,测试需要打自定义基座。

插件说明

插件基于科大讯飞离线语音合成(新版)SDK与离线语音合成(新版)封装,AIkit通用XTTS合成 Android SDK 文档AIkit通用XTTS合成 iOS SDK 文档AIkit 离线语音合成 Android SDK 文档,

插件使用

1、 引入插件

插件首页点击“试用”按钮,选择需要使用的项目,选完点击确认-->弹框点击“继续导入HBuilderX”-->再次选择需要试用的项目-->确认,会在项目根目录下生成uni_modules/yt-aikit,至此插件引入成功。 下列文档都是以uniapp为例介绍,文档最底下将给出uniapp-x的完整示例代码。

<!--打基座前现在需要使用的页面导入插件,否则插件不会打包进项目-->
import * as IflyTek from '@/uni_modules/yt-aikit'

2、初始化插件(离线和成设备第一次初始化需要联网,后续初始化不需要网络,但每次启动后都需要先初始化才能合成)

IflyTek.init({
    appId: '6***8',//您的appid,可在控制台查看(科大讯飞创建应用后得到)
    apiKey: '43*******2fb2',//您的apiKey,可在控制台查看(科大讯飞创建应用后得到)
    apiSecret: 'NWF*******WIz',//您的apiSecret,可在控制台查看(科大讯飞创建应用后得到)
    authInterval: 300,//在线授权校验间隔时长,默认为300s,可自定义设置,最短为60s,单位秒 (可选参数)
    authType: 0,//离线授权类型(0或1),0-->(默认)设备级授权(DEVICE)和 1-->应用级授权(APP)(可选参数)
    ability: 'ee62fa27c;e2e44feff',//ee62fa27c:中英听写能力ID  e2e44feff:通用XTTS合成能力ID,如果只需要中英文听写(离线语音听写(新版))只需传“ee62fa27c”,若只有tts(离线语音合成(新版))只需传"e2e44feff",两个同时需要传入“ee62fa27c;e2e44feff”
    refreshFile: false,//是否更新语音文件,默认不更新,更新后会把assets/xtts(修改assets文件需重新打基座)文件覆盖工作目录下的文件
    authHandler: (res) => {//授权(初始化)回调
        console.log(res)
    }
})
参数 参数类型 参数说明 是否必传
appId string appid可在控制台查看(科大讯飞创建应用后得到)
apiKey string apiKey可在控制台查看(科大讯飞创建应用后得到)
apiSecret string apiSecret可在控制台查看(科大讯飞创建应用后得到)
authInterval number 在线授权校验间隔时长,默认为300s,可自定义设置,最短为60s,单位秒
authType number 离线授权类型(0或1),0-->(默认)设备级授权(DEVICE)和 1-->应用级授权(APP)
ability string 能力ID ee62fa27c:中英听写能力ID e2e44feff:通用XTTS合成能力ID,如果只需要中英文听写(离线语音听写(新版))只需传“ee62fa27c”,若只有tts(离线语音合成(新版))只需传"e2e44feff",两个同时需要传入“ee62fa27c;e2e44feff”
refreshFile bool 是否更新语音文件,默认false,更新后会把assets/xtts(修改assets文件需重新打基座)文件覆盖工作目录下的文件
authHandler function 授权(初始化)回调,内容包含错误码,错误码查询

3、开始和成

IflyTek.startTTS({
    content: "离线合成能力能将文字信息转化为声音信息,让应用具备离线语音合成的能力。即让机器像人一样开口说话,给开发者的应用配上“嘴巴“。广泛应用于出行导航服务、阅读听书、智能音箱等行业领域",
    isSaveAudio: true,
    vcn: "xiaoyan",
    language: 1,
    textEncoding: "UTF-8",
    pitch: 50,
    volume: 50,
    speed: 50,
    reg: 0,
    rdn: 0,
    successHandler: (path) => {
        console.log(`音频保存路径isSaveAudio==false返回空字符:${path}`)
    },
    compoundHandler: (error) => {
        console.log(error)
    }
})
参数 参数类型 参数说明 是否必传
content string 合成内容
isSaveAudio bool 是否保存音频 默认:false
vcn string 发音人模型,插件里内置有“xiaoyan”、"xianfeng",需要其他模型可前往科大讯飞开放平台购买,后买后把模型文件复制到uni_modules/yt-iflytek/assets/xtts文件夹下,并重新打包测试(增减语音模型初始化SDK必须设置refreshFile为true)
language number 合成语种 1:中文, 2:英文, 3:法语, 5:日语, 6:俄语, 9:德语, 15:意大利语, 16:韩语, 23:西班牙语, 12:粤语, 8:印地语, 27:泰语--默认1
textEncoding string 文本编码 GBK:GBK编码, UTF-8:UTF-8编码, Unicode:Unicode编码 默认UTF-8
pitch number 合成音调最小值:0, 最大值:100 默认50
volume number 合成音调最小值:0, 最大值:100 默认50
pitch number 合成音量最小值:0, 最大值:100 默认50
speed number 合成语速最小值:0, 最大值:100 默认50
reg number 英文发音方式 0:引擎自动判断, 1:按字母发音, 2:按单词发音 默认:0
rdn number 数字发音方式 0:引擎自动判断, 1:按数字发音, 2:按字符串发音 默认:0
compoundHandler function 失败回调,内容包含错误码,错误码查询
successHandler function 成功回调,--isSaveAudio== true 返回音频保存路径

4、停止合成

IflyTek.stopTTS()

5、释放资源

IflyTek.releaseSDK()

6、获取所有音频文件路径

IflyTek.getAllAudioFilePath(files => {
    console.log(files)
})

7、离线语音识别

IflyTek.startDictation({
    onResult: (res) => {
        console.log(`中英文听写回调多次触发:${res}`)
    },
    onFinalResult: (res) => {
        console.log(`中英文听写完成:${res}`)
    },
    onError: (error) => {
        console.log(`中英文听写报错:${error}`)
    }
});

8、停止语音识别

IflyTek.stopDictation();

9、离线语音识别参数设置(识别前设置有效)

IflyTek.dictationConfigure({
                    lmLoad: true,//加载二遍资源   bool    true:加载, false:不加载  默认:true 非必填
                    vadLoad: false,//加载VAD资源    bool    true:加载, false:不加载  默认:false 非必填
                    puncLoad: false,//加载标点资源    bool    true:加载, false:不加载  默认:false 非必填
                    numLoad: false,//加载数字规整资源   bool    true:加载, false:不加载  默认:false 非必填
                    postprocOn: false,//是否开启后处理 bool    true:开启, false:不开启  默认:false 非必填
                    lmOn: false,//开启二遍  bool    true:开启, false:不开启  默认:false 非必填
                    vadOn: false,//是否开启vad功能    bool    true:开启, false:不开启  默认:false 非必填
                    vadSpeechEnd: 200,//vad结束参数 最小值:0, 最大值:999999   默认:200 vad后端点检测超时时间 非必填
                    vadResponsetime: 1000,//vadResponsetime 最小值:0, 最大值:999999  vad前端点检测超时时间 非必填
                    htkNeed: true,//htkNeed 是否输出htk结果 true:输出, false:不输出 默认:true  非必填
                    readableNeed: true,//是否输出readableNeed true:输出, false:不输出 默认:true 非必填
                    dialectType: 0,//方言参数。0-普通话/台湾,1-四川,2-粤语,3-长沙,4-东北,5-甘肃,6-贵州,7-河北,8-合肥,9-河南,10-客家,11-闽南,12-南昌,13-南京,14-宁夏,15-山西,16-山东,17-上海/苏州,18-太原,19-天津,20-皖北,21-武汉,22-云南 非必填
                    pgsNeed: true,//是否输出pgs结果   bool    true:输出, false:不输出  否   true  非必填
                    plainNeed: true,//是否输出plain结果   bool    true:输出, false:不输出  否   true 非必填
                    vadNeed: true,//是否输出vad结果   bool    true:输出, false:不输出  否   true 非必填
                } )

uniapp-x完整示例

<template>
    <view class="content">
        <view class="btn" @click="initSDK"><text>初始化</text></view>
        <view class="btn" @click="startTTS"><text>离线合成</text></view>
        <view class="btn" @click="getAllAudioFilePath"><text>获取所有音频文件</text></view>
        <view class="btn" @click="stopTTS"><text>停止</text></view>
        <view class="btn" @click="releaseSDK"><text>释放资源</text></view>
        <view class="btn" @click="dictationConfigure"><text>配置识别参数</text></view>
        <view class="btn" @click="startDictation"><text>开始语音合成</text></view>
        <view class="btn" @click="stopDictation"><text>停止合成</text></view>
    </view>
</template>

<script>
    import * as IflyTek from '@/uni_modules/yt-aikit'
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {

        },
        methods: {
            initSDK() {
                IflyTek.initSDK({
                    appId: '66****68',//替换成自己的
                    apiKey: '4351**********b5f3a991c32fb2',//替换成自己的
                    apiSecret: 'NWFkYTk0Yj***********2EzOWIz',//替换成自己的
                    authInterval: 300,
                    authType: 0,
                    ability: 'ee62fa27c;e2e44feff',//ee62fa27c:中英听写能力ID  e2e44feff:通用XTTS合成能力ID,如果只需要中英文听写(离线语音听写(新版))只需传“ee62fa27c”,若只有tts(离线语音合成(新版))只需传"e2e44feff",两个同时需要传入“ee62fa27c;e2e44feff”
                    refreshFile: false,
                    authHandler: (res) => {
                        console.log(res)
                    }
                } as IflyTek.IntOptions)
            },
            startTTS() {
                IflyTek.startTTS({
                    content: "离线合成能力能将文字信息转化为声音信息,让应用具备离线语音合成的能力。即让机器像人一样开口说话,给开发者的应用配上“嘴巴“。广泛应用于出行导航服务、阅读听书、智能音箱等行业领域",
                    isSaveAudio: true,
                    vcn: "xiaoyan",
                    language: 1,
                    textEncoding: "UTF-8",
                    pitch: 50,
                    volume: 50,
                    speed: 50,
                    reg: 0,
                    rdn: 0,
                    successHandler: (path) => {
                        console.log(`音频保存路径isSaveAudio==false返回空字符:${path}`)
                    },
                    compoundHandler: (error) => {
                        console.log(error)
                    }
                } as IflyTek.SpeechOptions)
            },
            //停止合成
            stopTTS() {
                IflyTek.stopTTS()
            },
            //释放资源
            releaseSDK() {
                IflyTek.releaseSDK()
            },
            //获取已生成的所有音频路径
            getAllAudioFilePath() {
                IflyTek.getAllAudioFilePath(files => {
                    console.log(files)
                })
            },
            //配置离线配置参数
            dictationConfigure() {
                IflyTek.dictationConfigure({
                    lmLoad: true,//加载二遍资源   bool    true:加载, false:不加载  默认:true 非必填
                    vadLoad: false,//加载VAD资源    bool    true:加载, false:不加载  默认:false 非必填
                    puncLoad: false,//加载标点资源    bool    true:加载, false:不加载  默认:false 非必填
                    numLoad: false,//加载数字规整资源   bool    true:加载, false:不加载  默认:false 非必填
                    postprocOn: false,//是否开启后处理 bool    true:开启, false:不开启  默认:false 非必填
                    lmOn: false,//开启二遍  bool    true:开启, false:不开启  默认:false 非必填
                    vadOn: false,//是否开启vad功能    bool    true:开启, false:不开启  默认:false 非必填
                    vadSpeechEnd: 200,//vad结束参数 最小值:0, 最大值:999999   默认:200 vad后端点检测超时时间 非必填
                    vadResponsetime: 1000,//vadResponsetime 最小值:0, 最大值:999999  vad前端点检测超时时间 非必填
                    htkNeed: true,//htkNeed 是否输出htk结果 true:输出, false:不输出 默认:true  非必填
                    readableNeed: true,//是否输出readableNeed true:输出, false:不输出 默认:true 非必填
                    dialectType: 0,//方言参数。0-普通话/台湾,1-四川,2-粤语,3-长沙,4-东北,5-甘肃,6-贵州,7-河北,8-合肥,9-河南,10-客家,11-闽南,12-南昌,13-南京,14-宁夏,15-山西,16-山东,17-上海/苏州,18-太原,19-天津,20-皖北,21-武汉,22-云南 非必填
                    pgsNeed: true,//是否输出pgs结果   bool    true:输出, false:不输出  否   true  非必填
                    plainNeed: true,//是否输出plain结果   bool    true:输出, false:不输出  否   true 非必填
                    vadNeed: true,//是否输出vad结果   bool    true:输出, false:不输出  否   true 非必填
                } as IflyTek.DictationOptions)
            },
            //开始中英文听写
            startDictation() {
                IflyTek.startDictation({
                    onResult: (res) => {
                        console.log(`中英文听写回调多次触发:${res}`)
                    },
                    onFinalResult: (res) => {
                        console.log(`中英文听写完成:${res}`)
                    },
                    onError: (error) => {
                        console.log(`中英文听写报错:${error}`)
                    }
                } as IflyTek.DictationHandle);
            },
            //停止中英文听写
            stopDictation() {
                IflyTek.stopDictation();
            }
        }
    }
</script>

<style>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .btn {
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: antiquewhite;
        border-radius: 8rpx;
        width: 690rpx;
        height: 80rpx;
        margin-top: 40rpx;
    }
</style>

uniapp 完整示例

<template>
    <view class="content">
        <view class="btn" @click="initSDK"><text>初始化</text></view>
        <view class="btn" @click="startTTS"><text>离线合成</text></view>
        <view class="btn" @click="getAllAudioFilePath"><text>获取所有音频文件</text></view>
        <view class="btn" @click="stopTTS"><text>停止</text></view>
        <view class="btn" @click="releaseSDK"><text>释放资源</text></view>
        <view class="btn" @click="dictationConfigure"><text>配置识别参数</text></view>
        <view class="btn" @click="startDictation"><text>开始语音合成</text></view>
        <view class="btn" @click="stopDictation"><text>停止合成</text></view>
    </view>
</template>

<script>
    import * as IflyTek from '@/uni_modules/yt-aikit'
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {

        },
        methods: {
            initSDK() {
                IflyTek.initSDK({
                    appId: '6*****8',
                    apiKey: '43*****2fb2',
                    apiSecret: 'NW****WIz',
                    authInterval: 300,
                    authType: 0,
                    refreshFile: false,
                    authHandler: (res) => {
                        console.log(res)
                    }
                })
            },
            startTTS() {
                IflyTek.startTTS({
                    content: "离线合成能力能将文字信息转化为声音信息,让应用具备离线语音合成的能力。即让机器像人一样开口说话,给开发者的应用配上“嘴巴“。广泛应用于出行导航服务、阅读听书、智能音箱等行业领域",
                    isSaveAudio: true,
                    vcn: "xiaoyan",
                    language: 1,
                    textEncoding: "UTF-8",
                    pitch: 50,
                    volume: 50,
                    speed: 50,
                    reg: 0,
                    rdn: 0,
                    successHandler: (path) => {
                        console.log(`音频保存路径isSaveAudio==false返回空字符:${path}`)
                    },
                    compoundHandler: (error) => {
                        console.log(error)
                    }
                })
            },
            //停止合成
            stopTTS() {
                IflyTek.stopTTS()
            },
            //释放资源
            releaseSDK() {
                IflyTek.releaseSDK()
            },
            //获取已生成的所有音频路径
            getAllAudioFilePath() {
                IflyTek.getAllAudioFilePath(files => {
                    console.log(files)
                })
            },
            //配置离线配置参数
            dictationConfigure() {
                IflyTek.dictationConfigure({
                    lmLoad: true,//加载二遍资源   bool    true:加载, false:不加载  默认:true 非必填
                    vadLoad: false,//加载VAD资源    bool    true:加载, false:不加载  默认:false 非必填
                    puncLoad: false,//加载标点资源    bool    true:加载, false:不加载  默认:false 非必填
                    numLoad: false,//加载数字规整资源   bool    true:加载, false:不加载  默认:false 非必填
                    postprocOn: false,//是否开启后处理 bool    true:开启, false:不开启  默认:false 非必填
                    lmOn: false,//开启二遍  bool    true:开启, false:不开启  默认:false 非必填
                    vadOn: false,//是否开启vad功能    bool    true:开启, false:不开启  默认:false 非必填
                    vadSpeechEnd: 200,//vad结束参数 最小值:0, 最大值:999999   默认:200 vad后端点检测超时时间 非必填
                    vadResponsetime: 1000,//vadResponsetime 最小值:0, 最大值:999999  vad前端点检测超时时间 非必填
                    htkNeed: true,//htkNeed 是否输出htk结果 true:输出, false:不输出 默认:true  非必填
                    readableNeed: true,//是否输出readableNeed true:输出, false:不输出 默认:true 非必填
                    dialectType: 0,//方言参数。0-普通话/台湾,1-四川,2-粤语,3-长沙,4-东北,5-甘肃,6-贵州,7-河北,8-合肥,9-河南,10-客家,11-闽南,12-南昌,13-南京,14-宁夏,15-山西,16-山东,17-上海/苏州,18-太原,19-天津,20-皖北,21-武汉,22-云南 非必填
                    pgsNeed: true,//是否输出pgs结果   bool    true:输出, false:不输出  否   true  非必填
                    plainNeed: true,//是否输出plain结果   bool    true:输出, false:不输出  否   true 非必填
                    vadNeed: true,//是否输出vad结果   bool    true:输出, false:不输出  否   true 非必填
                })
            },
            //开始中英文听写
            startDictation() {
                IflyTek.startDictation({
                    onResult: (res) => {
                        console.log(`中英文听写回调多次触发:${res}`)
                    },
                    onFinalResult: (res) => {
                        console.log(`中英文听写完成:${res}`)
                    },
                    onError: (error) => {
                        console.log(`中英文听写报错:${error}`)
                    }
                });
            },
            //停止中英文听写
            stopDictation() {
                IflyTek.stopDictation();
            }
        }
    }
</script>

<style>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .btn {
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: antiquewhite;
        border-radius: 8rpx;
        width: 690rpx;
        height: 80rpx;
        margin-top: 40rpx;
    }
</style>

隐私、权限声明

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />

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

插件本身不会采集用户信息,插件使用科大讯飞离线语音合成(新版)SDK,参考其官方网站https://www.xfyun.cn/doc/policy/sdk_compliance.html#_1、sdk扩展业务功能的配置说明

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

暂无用户评论。