flutter_asr 語音文件識別 插件已開發(fā)完畢(拿走不謝)

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

  1. 需要添加權(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

  1. 檢查是否有權(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 '識別異常';
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容