更新记录
1.0.1(2025-10-21)
- 新增uniapp完整示例
1.0.0(2025-10-21)
- 新版发布
平台兼容性
uni-app(4.66)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | × | × | √ | √ | 5.0 | × | × |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.66)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | - | - | - | - |
其他
多语言 | 暗黑模式 | 宽屏模式 |
---|---|---|
× | × | √ |
科大讯飞离线语音合成(最新版)
开发文档
AIkit通用XTTS合成 Android SDK 文档, AIkit通用XTTS合成 iOS SDK 文档, 错误码查询, 科大讯飞控制台创建应用获取
特别提醒
- 购买本插件前,请先试用、请先试用、请先试用,并充分自测确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款;
- 如有使用上的疑问、bug,可以进交流群联系作者;
- 作者可承接各种插件定制;
- 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;
- 结合文档和示例demo集成使用;
- 测试需要打自定义基座,测试需要打自定义基座,测试需要打自定义基座。‘
- 插件目前仅支持Android端后续会支持iOS端
插件说明
插件基于科大讯飞离线语音合成(新版)SDK封装,AIkit通用XTTS合成 Android SDK 文档,AIkit通用XTTS合成 iOS SDK 文档。
插件使用
1、 引入插件
插件首页点击“试用”按钮,选择需要使用的项目,选完点击确认-->弹框点击“继续导入HBuilderX”-->再次选择需要试用的项目-->确认,会在项目根目录下生成uni_modules/yt-iflytek,至此插件引入成功。 下列文档都是以uniapp为例介绍,文档最底下将给出uniapp-x的完整示例代码。
<!--打基座前现在需要使用的页面导入插件,否则插件不会打包进项目-->
import * as IflyTek from '../../uni_modules/yt-iflytek'
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)(可选参数)
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) | 否 |
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.release()
6、获取所有音频文件路径
IflyTek.getAllAudioFilePath(files => {
console.log(files)
})
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="release"><text>释放资源</text></view>
</view>
</template>
<script>
import * as IflyTek from '../../uni_modules/yt-iflytek'
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
initSDK() {
IflyTek.init({
appId: '6***8',
apiKey: '43*******2fb2',
apiSecret: 'NWF*******WIz',
authInterval: 300,
authType: 0,
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()
},
//释放资源
release() {
IflyTek.release()
},
//获取已生成的所有音频路径
getAllAudioFilePath() {
IflyTek.getAllAudioFilePath(files => {
console.log(files)
})
}
}
}
</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="release"><text>释放资源</text></view>
</view>
</template>
<script>
import * as IflyTek from '../../uni_modules/yt-iflytek'
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
initSDK() {
IflyTek.init({
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()
},
//释放资源
release() {
IflyTek.release()
},
//获取已生成的所有音频路径
getAllAudioFilePath() {
IflyTek.getAllAudioFilePath(files => {
console.log(files)
})
}
}
}
</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>