尊敬的开发者朋友,欢迎您选择大发pk10开放平台。本文档旨在帮助HarmonyOS 应用开发者在程序中快速接入AIKit HarmonyOS SDK。作为开发者,您只需要进行简单配置,就可以在您的应用中使用AIKit提供的各种AI能力。
关于SDK的具体使用方法,请仔细阅读下面的文档。
http://northseasurffestival.com/
中注册成为开发者并创建一款应用,您将获得标识您应用的唯一ID。depedencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
}
权限 | 用途 |
---|---|
INTERNET | 允许程序联网的权限 |
MICROPHONE | 允许应用检测网络连接状态 |
"reqPermissions": [
{
"name": "harmonyos.permission.INTERNET",
"reason": "the app need internet"
},
{
"name": "harmonyos.permission.MICROPHONE",
"reason": "the app need microphone",
"usedScene": {
"ability": [
"ccom.iflytek.aiaa.MainAbility"
],
"when": "always"
}
}
]
// 初始值化时 将 appid、apikey 和 apisecret 进入
SpeechUtility.getInstance().init(getContext(),
"xxxxx", // appid
"xxxxx", // apikey
"xxxxx" // apisecret
);
参数Key | 名称 | 是否必传 |
---|---|---|
context | 鸿蒙系统的 Context | Y |
APPID | 应用id | Y |
APIKEY | API Key | Y |
APISERCET | API密钥 | Y |
使用SpeechUtility.getInstance().voiceRecognize()
方法,参考代码如下:
/**
* 声频程序转字体 将发掘包中的mp3转成word文档
*/
private void audioFiles2String() {
try {
// 得到 品牌中的 测试软件的音频软件
String mp3Path = "resources/rawfile/test.mp3";
RawFileEntry rawFileEntry = getContext().getResourceManager().getRawFileEntry(mp3Path);
Resource resource = rawFileEntry.openRawFile();
// 建设视频语音听写产品参数类:IatParam
IatParam iatParam = new IatParam();
// 设制声频材料的论文格式
iatParam.setEncoding(IatParam.Encoding.lame);
SpeechUtility instance = SpeechUtility.getInstance();
// 开始了声音辨认
instance.voiceRecognize(iatParam, resource, new ResultCallBack<IatResult>() {
@Override
public void onResult(IatResult result) {
// 了解数据源回掉 目光 选股在子线程运行
handler.postTask(() -> {
String s = CommonResultParser.parseIatResult(result.getData());
textField.append(s);
});
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
使用录音功能需要先在Ability
类中动态申请"harmonyos.permission.MICROPHONE"
权限,参考代码如下:
if (verifySelfPermission("harmonyos.permission.MICROPHONE") != IBundleManager.PERMISSION_GRANTED) {
// 软件应用未被获取授权管理
if (canRequestPermission("harmonyos.permission.MICROPHONE")) {
// 有无能够个人伸请弹框许可(首轮个人伸请也许微信用户未选取禁止进入且不想信息提示)
requestPermissionsFromUser(new String[]{"harmonyos.permission.MICROPHONE"},
REQUEST_MICROPHONE);
} else {
// 显示信息软件应用可以应用权限的情形,的提示用户的来到快速设置品牌授权
}
} else {
// 权限管理已被给予
}
/**
* 开始了语音
*/
private void startRecord() {
// 新创建语言听写数据类:IatParam
IatParam iatParam = new IatParam();
iatParam.setEncoding(IatParam.Encoding.raw);
SpeechUtility.getInstance().startRecord(iatParam, new ResultCallBack<IatResult>() {
@Override
public void onResult(IatResult result) {
// 修改大数据回掉 要留意 回调函数在子线程来执行
handler.postTask(() -> {
String s = CommonResultParser.parseIatResult(result.getData());
textField.append(s);
});
}
});
}
/**
* 进行录音带
*/
private void stopRecord() {
SpeechUtility.getInstance().stopRecord();
}
语音听写参数类 IatParam
支持设置的参数见下表:
参数名称 | 数据类型 | 名称 | 是否必须 | 说明 |
---|---|---|---|---|
encoding | string | 音频格式 | Y | 目前仅支持“ lame” 、“raw ”,mp3文件请使用“ lame”,pcm输入时使用 “raw ” |
ptt | int | 是否开启标点识别 | N | 0:不开启标点识别, 1:开启标点识别,默认不开启 |
nunum | int | 是否把中文数字转换成阿拉伯数字 | N | 0:关闭, 1:开启 默认关闭 |
dwa | string | pgs | N | 最小长度:0, 最大长度:10 |
evl | int | engine vad link | N | 0:关, 1:开启 |
proc | int | 是否使用后处理 | N | 0:关, 1:开 |
nbest | int | 句子级别多候选个数 | N | 最小值:0, 最大值:5 |
wbest | int | 词级别多候选个数 | N | 最小值:0, 最大值:5 |
pvinfo | int | 在 pgs 结果中展示vad信息 | N | 0:关, 1:开 |
aqc | int | aqc | N | 0:关, 1:开 |
ltc | int | 中英文筛选功能 | N | 最小值:0, 最大值:3 |
vad_enable | bool | 使能VAD | N | true/false |
vad_eos | int | 后端点 | N | 最小值:0, 最大值:60000,当vad_enable为true时有效 |
vrto | int | vad前置端点超时时间 | N | 最小值:0, 最大值:60000 |
JSON字段 | 英文全称 | 类型 | 说明 |
---|---|---|---|
sn | sentence | number | 第几句 |
ls | last sentence | boolean | 是否最后一句 |
bg | begin | number | 保留字段,无需关注 |
ed | end | number | 保留字段,无需关注 |
ws | words | array | 词 |
cw | chinese word | array | 中文分词 |
w | word | string | 单字 |
sc | score | number | 分数 |
{
"sn": 1,
"ls": true,
"bg": 0,
"ed": 0,
"ws": [
{
"bg": 0,
"cw": [
{
"w": "本文",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "的",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "天气预告",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "咋个样",
"sc": 0
}
]
},
{
"bg": 0,
"cw": [
{
"w": "。",
"sc": 0
}
]
}
]
}
与语音听写相反,语音合成是将一段文字转换为语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。文字格式为“utf8”。
语音合成使用SpeechSynthesizer
接口,示例代码如下
/**
* 进行制成
*/
private void startTts() {
String stringSource = "那段话将被制作而成为语音聊天";
// 创建个存储文件夹保存文档制作而成的统计数据
File externalCacheDir = getContext().getExternalCacheDir();
File file = new File(externalCacheDir, "tts_test.mp3");
if (file.exists()) {
file.delete();
}
SpeechUtility instance = SpeechUtility.getInstance();
TtsParam ttsParam = new TtsParam();
instance.voiceSynthesise(ttsParam, stringSource, new ResultCallBack<TtsResult>() {
@Override
public void onResult(TtsResult result) {
// 取得数值回掉 注意事项 选股在子线程执行工作
// result.getData() 为获得的发音的数据
FileUtil.append(file, result.getData());
// 提炼完后
if (result.getStatus() == SpeechUtility.StatusCode.END) {
handler.postTask(() -> showToast("组成立即"));
// 开启播出
playMp3(file);
}
}
}
);
}
/**
* 点击音频视频
*
* @param file 源zip文件
*/
private void playMp3(File file) {
try {
Player player = new Player(getContext());
FileInputStream in = new FileInputStream(file);
// 从显示流拿FD因素
FileDescriptor fd = in.getFD();
Source source = new Source(fd);
player.setSource(source);
player.prepare();
player.play();
} catch (Exception e) {
e.printStackTrace();
}
}
语音合成参数类 TtsParam
支持设置的参数见下表:
参数名称 | 数据类型 | 名称 | 是否必须 | 说明 |
---|---|---|---|---|
encoding | string | 输出音频格式 | N | 目前仅支持“ lame” (mp3文件) |
speed | int | 合成语速 | N | 默认50,取值范围:[0-100] |
volume | int | 合成音量 | N | 默认50,取值范围:[0-100] |
pitch | int | 合成语调 | N | 默认50,取值范围:[0-100] |
sample_rate | int | 采样率 | N | 暂时只支持16000 |
channels | int | 声道数 | N | 可选值1,2.默认值1 |
bit_depth | int | 位深 | N | 8,16默认值16 |
vcn | string | 发音人 | N | 可选值x2_lzy:x2_lzy, x2_chongchong:x2_chongchong, x2_yifei:x2_yifei, x2_xiaopei:x2_xiaopei, x2_xiaoyuan:x2_xiaoyuan |
public static SpeechUtility getInstance()
返回:
SpeechUtilitypublic void init(harmonyos.app.Context context,
java.lang.String appId,
java.lang.String apiKey,
java.lang.String apiSecret)
参数:
context
- context
appId
- appId
apiKey
- apiKey
apiSecret
- apiSecret
public void voiceRecognize(com.iflytek.cloud.param.IatParam param,
com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.IatResult> callBack)
参数:
param
- 语音识别入参
callBack
- ResultCallBack
public void voiceRecognize(com.iflytek.cloud.param.IatParam param,
java.io.InputStream resource,
com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.IatResult> callBack)
参数:
param
- 语音转写的参数
resource
- 语音流
callBack
- 回调
public void startRecord(com.iflytek.cloud.param.IatParam iatParam,
com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.IatResult> callBack)
参数:
iatParam
- IatParam
callBack
- ResultCallBack
public boolean isRecording()
返回:
booleanpublic void stopRecord()
public void voiceSynthesise(com.iflytek.cloud.param.TtsParam param,
java.lang.String stringSource,
com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.TtsResult> callBack)
参数:
param
- TtsParam 参数
stringSource
- 待合成的内容
callBack
- 合成回调
public void writeData(java.io.InputStream resource)
参数:
resource
- 数据源
public void writeData(java.io.File file)
throws java.io.FileNotFoundException
参数:
file
- 数据源
抛出:
java.io.FileNotFoundException
- FileNotFoundException
public void writeData(byte[] inData)
参数:
inData
- 数据源
public void writeData(byte[] inData,
int dataStatus)
参数:
inData
- 数据源
dataStatus
- 写入的状态码
public void writeDataEnd()
public destroy()
说明:语音转写的入参封装类, 可通过该类的set
方法设置参数,也可以通过put(key,value)
方式设置参数。
说明:语音合成的入参封装类, 可通过该类的set
方法设置参数,也可以通过put(key,value)
方式设置参数。
答:请求进行 HarmonyOS 1.0的电话安卓版本。
答:灵活运用 Version.getVersion()可刷出 SDK 游戏版本号。
答:SDK不支技多路应用程序。