0 purchases
speech xf
speech_xf #
该插件集成了讯飞语音识别和语音合成功能,支持Android和IOS平台
官网注册 #
1.注册账号
请参阅注册讯飞账号以获取更多信息。
2.创建应用并获取AppID
3.分别下载Android和IOS端的SDK
Android端配置 #
1.在项目的android/app/main目录下新建Jnilibs目录,并将demo/libs下的arm64-v8a和armeabi-v7a两个目录拷贝进去。
2.添加用户权限
在工程 AndroidManifest.xml 文件中添加如下权限
<!--连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--获取当前wifi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--允许程序改变网络连接状态 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<!--读取手机信息权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--读取联系人权限,上传联系人需要用到此权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!--外存储写权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--外存储读权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--配置权限,用来记录应用配置信息 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
<!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--如需使用人脸识别,还要添加:摄像头权限,拍照需要用到 -->
<uses-permission android:name="android.permission.CAMERA" />
copied to clipboard
3.添加混淆
如需在打包或者生成APK的时候进行混淆,请在proguard.pro中添加如下代码:
-keep class com.iflytek.**{*;}
-keepattributes Signature
copied to clipboard
IOS端配置 #
1.在info.plist中添加以下权限
<key>NSMicrophoneUsageDescription</key>
<string></string>
<key>NSLocationUsageDescription</key>
<string></string>
<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSContactsUsageDescription</key>
<string></string>
copied to clipboard
注:建议真机测试。如果非要用模拟器,则使用Xcode打开项目。在Build Settings中找到Excluded Architectures,在debug中添加支持arm64架构。
添加依赖 #
dependencies:
speech_xf: ^1.3.0
copied to clipboard
使用 #
1.初始化
void initSdk() async {
await SpeechXf.init('这里是你在讯飞平台申请的appid');
}
copied to clipboard
2.使用内置界面
await SpeechXf.openNativeUIDialog(
isDynamicCorrection: true,
language: settingResult['language'],
vadBos: settingResult['vadBos'],
vadEos: settingResult['vadEos'],
ptt: settingResult['ptt'],
);
copied to clipboard
3.无界面语音识别
await SpeechXf.startListening(
isDynamicCorrection: false,
language: settingResult['language'],
vadBos: settingResult['vadBos'],
vadEos: settingResult['vadEos'],
ptt: settingResult['ptt'],
);
copied to clipboard
4.停止
await SpeechXf.stopListening();
copied to clipboard
5.取消
await SpeechXf.cancelListening();
copied to clipboard
6.语音听写结果监听
SpeechXf().onResult().listen((event) {
if (event.error != null) {
showToast(event.error!, position: ToastPosition.bottom);
} else {
if (event.result != null) {
speechController.text = speechController.text + event.result!;
}
if (event.isLast == true) {
showToast('结束说话...', position: ToastPosition.bottom);
}
}
});
copied to clipboard
7.上传用户热词
await SpeechXf.uploadUserWords(userWords);
copied to clipboard
8.音频流识别
await SpeechXf.audioRecognizer('iattest.wav');
copied to clipboard
9.开始语音合成
await SpeechXf.startSpeaking();
copied to clipboard
10.取消语音合成
await SpeechXf.stopSpeaking();
copied to clipboard
11.暂停语音合成
await SpeechXf.pauseSpeaking();
copied to clipboard
12.继续语音合成
await SpeechXf.resumeSpeaking();
copied to clipboard
13.循环播放(在initState中)
SpeechXf.onLoopSpeakingListener(
onCompeleted: (onCompeleted) async {
await startSpeaking();
},
);
copied to clipboard
14.销毁语音合成器
SpeechXf.ttsDestroy();
copied to clipboard
15.销毁语音识别器
SpeechXf.iatDestroy();
copied to clipboard
16.音量变化回调
SpeechXf.onVolumeChanged(
volume: (v) {
showToast('当前音量:$v');
},
bytes: (bytes) {},
);
```
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.