flutter_asr 語音文件識別 插件已開發(fā)完畢(拿走不謝)
最近業(yè)務(wù)中用到了測評,英語的語音識別,iOS很友好有免費的api,Android找了很久沒有找到合適免費的,最終選擇了百度的,自己全程搞定 原生集成百度識別sdk 并成功開發(fā)出插件,iOS 插件難度不大因為本身就是搞這個搞了好多年。
直接拿走就行用,主要是 用戶錄音 拿到文件去識別,拿走不謝記得star 哦
pub 地址 flutter_asr
github 源碼地址 flutter_asr
flutter 語音文件 識別 (語音轉(zhuǎn)文本) (英語)
- Android 端采用百度語音識別sdk(百度收費)
- iOS 端采用 系統(tǒng)語音識別功能(免費)
注意:格式 - Android 端需要 pcm
- iOS mp3 或m4a 都行,pcm 無法識別
- 重要... 需要真機測試 模擬器報錯
配置
Android
- 需要添加權(quán)限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
示例
//百度識別需要錄音權(quán)限 雖然是文件識別也需要否則報錯
await requestPermission();
String cacheFilePath = await localPath();
//path 是pcm 格式文件,路徑是全路徑 baiduAppId相關(guān) 百度識別后臺查看
var result = await voiceRsaPlugin.getVoiceAsr('', params: {
'appid': 'baiduAppId',
'key': 'baiduKey',
'secret': 'baiduSecret',
'infile': cacheFilePath,
});
if (result != null) {
if (result['code'] == 0) {//識別正確的結(jié)果
var message = result['message'] ?? '';
} else {
// 異常識別
if (result['message'] == "No speech detected") {
result['message'] = "未檢測到語音";
}
throw result['message'] ?? '識別異常';
}
} else {
throw '識別異常';
}
iOS
ios info 配置權(quán)限 Privacy - Speech Recognition Usage Description
- 檢查是否有權(quán)限
示例:
var requestResult = await voiceRsaPlugin.requestAuthorization();
switch (requestResult) {
case RsaAuthorization.agree:
break;
case RsaAuthorization.disagree:
// ToastUtils.show('請在設(shè)置中同意語音識別權(quán)限');
return;
case RsaAuthorization.unAvailable:
// ToastUtils.show('該設(shè)備不支持語音識別');
return;
case RsaAuthorization.unknown:
// ToastUtils.show('語音識別權(quán)限未知');
return;
}
String cacheFilePath = await localPath();
var result = await voiceRsaPlugin.getVoiceAsr(cacheFilePath);
if (result != null) {
if (result['code'] == 0) {//識別正確的結(jié)果
var message = result['message'] ?? '';
} else {
// 異常識別
if (result['message'] == "No speech detected") {
result['message'] = "未檢測到語音";
}
throw result['message'] ?? '識別異常';
}
} else {
throw '識別異常';
}
}