BDSASRDefines.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. //
  2. // BDSASRDefines.h
  3. // BDSpeechClient
  4. //
  5. // Created by baidu on 16/6/6.
  6. // Copyright © 2016年 baidu. All rights reserved.
  7. //
  8. #ifndef BDSASRDefines_h
  9. #define BDSASRDefines_h
  10. #import <Foundation/Foundation.h>
  11. #pragma mark - ASR Delegate
  12. @protocol BDSClientASRDelegate<NSObject>
  13. - (void)VoiceRecognitionClientWorkStatus:(int)workStatus obj:(id)aObj; // TBDVoiceRecognitionClientWorkStatus
  14. @end
  15. #pragma mark - ASR Command
  16. extern NSString* BDS_ASR_CMD_START;
  17. extern NSString* BDS_ASR_CMD_STOP;
  18. extern NSString* BDS_ASR_CMD_CANCEL;
  19. extern NSString* BDS_ASR_CMD_LOAD_ENGINE;
  20. extern NSString* BDS_ASR_CMD_UNLOAD_ENGINE;
  21. #pragma mark - 设定采样率
  22. typedef enum TBDVoiceRecognitionRecordSampleRateFlags
  23. {
  24. EVoiceRecognitionRecordSampleRateAuto = 0,
  25. EVoiceRecognitionRecordSampleRate8K,
  26. EVoiceRecognitionRecordSampleRate16K,
  27. } TBDVoiceRecognitionRecordSampleRateFlags;
  28. #pragma mark - 设置识别语言
  29. typedef enum TBDVoiceRecognitionLanguage
  30. {
  31. EVoiceRecognitionLanguageChinese = 0,
  32. EVoiceRecognitionLanguageCantonese,
  33. EVoiceRecognitionLanguageEnglish,
  34. EVoiceRecognitionLanguageSichuanDialect,
  35. } TBDVoiceRecognitionLanguage;
  36. #pragma mark - 提示音类型
  37. typedef enum TBDVoiceRecognitionPlayTones
  38. {
  39. EVRPlayToneTypeStart = (1 << 0), // 开始识别提示音, record_start.caf (会影响端点检测准确率,建议不要与端点检测同时开启)
  40. EVRPlayToneTypeEnd = (1 << 1), // 结束识别提示音, record_end.caf
  41. EVRPlayToneTypeSuccess = (1 << 2), // 识别成功提示音, record_success.caf
  42. EVRPlayToneTypeFail = (1 << 3), // 识别失败提示音, record_fail.caf
  43. EVRPlayToneTypeCancel = (1 << 4), // 取消识别提示音, record_cancel.caf
  44. EVRPlayToneNone = 0, // 关闭提示音
  45. EVRPlayToneAll = (EVRPlayToneTypeStart | EVRPlayToneTypeEnd | EVRPlayToneTypeSuccess | EVRPlayToneTypeFail | EVRPlayToneTypeCancel) // 打开所有提示音
  46. } TBDVoiceRecognitionPlayTones;
  47. #pragma mark - 语音识别策略
  48. typedef enum TBDVoiceRecognitionStrategy
  49. {
  50. EVR_STRATEGY_ONLINE = 0, // 在线识别
  51. EVR_STRATEGY_OFFLINE = 1, // 离线识别
  52. EVR_STRATEGY_ONLINE_PRI = 2, // 在线优先
  53. EVR_STRATEGY_OFFLINE_PRI = 3, // 离线优先
  54. EVR_STRATEGY_BOTH = 4, // 并行模式
  55. } TBDVoiceRecognitionStrategy;
  56. #pragma mark - 语音识别离线引擎类型
  57. typedef enum TBDVoiceRecognitionOfflineEngineType
  58. {
  59. EVR_OFFLINE_ENGINE_INPUT = 0, // 离线引擎输入法模式
  60. EVR_OFFLINE_ENGINE_GRAMMER = 2, // 离线引擎语法模式
  61. } TBDVoiceRecognitionOfflineEngineType;
  62. #pragma mark - 语音识别类型
  63. typedef enum TBDVoiceRecognitionProperty
  64. {
  65. EVoiceRecognitionPropertyMusic = 10001, // 音乐
  66. EVoiceRecognitionPropertyVideo = 10002, // 视频
  67. EVoiceRecognitionPropertyApp = 10003, // 应用
  68. EVoiceRecognitionPropertyWeb = 10004, // web
  69. EVoiceRecognitionPropertySearch = 10005, // 热词
  70. EVoiceRecognitionPropertyEShopping = 10006, // 电商&购物
  71. EVoiceRecognitionPropertyHealth = 10007, // 健康&母婴
  72. EVoiceRecognitionPropertyCall = 10008, // 打电话
  73. EVoiceRecognitionPropertyMedicalCare = 10052, // 医疗
  74. EVoiceRecognitionPropertyCar = 10053, // 汽车
  75. EVoiceRecognitionPropertyCatering = 10054, // 娱乐餐饮
  76. EVoiceRecognitionPropertyFinanceAndEconomics = 10055, // 财经
  77. EVoiceRecognitionPropertyGame = 10056, // 游戏
  78. EVoiceRecognitionPropertyCookbook = 10057, // 菜谱
  79. EVoiceRecognitionPropertyAssistant = 10058, // 助手
  80. EVoiceRecognitionPropertyRecharge = 10059, // 话费充值
  81. EVoiceRecognitionPropertyMap = 10060, // 地图
  82. EVoiceRecognitionPropertyInput = 20000, // 输入
  83. } TBDVoiceRecognitionProperty;
  84. #pragma mark - 语音识别状态
  85. typedef enum TBDVoiceRecognitionClientWorkStatus
  86. {
  87. EVoiceRecognitionClientWorkStatusStartWorkIng, // 识别工作开始,开始采集及处理数据
  88. EVoiceRecognitionClientWorkStatusStart, // 检测到用户开始说话
  89. EVoiceRecognitionClientWorkStatusEnd, // 本地声音采集结束,等待识别结果返回并结束录音
  90. EVoiceRecognitionClientWorkStatusNewRecordData, // 录音数据回调
  91. EVoiceRecognitionClientWorkStatusFlushData, // 连续上屏
  92. EVoiceRecognitionClientWorkStatusFinish, // 语音识别功能完成,服务器返回正确结果
  93. EVoiceRecognitionClientWorkStatusMeterLevel, // 当前音量回调
  94. EVoiceRecognitionClientWorkStatusCancel, // 用户取消
  95. EVoiceRecognitionClientWorkStatusError, // 发生错误
  96. /* 离线引擎状态 */
  97. EVoiceRecognitionClientWorkStatusLoaded, // 离线引擎加载完成
  98. EVoiceRecognitionClientWorkStatusUnLoaded, // 离线引擎卸载完成
  99. /* CHUNK状态 */
  100. EVoiceRecognitionClientWorkStatusChunkThirdData, // CHUNK: 识别结果中的第三方数据
  101. EVoiceRecognitionClientWorkStatusChunkNlu, // CHUNK: 识别结果中的语义结果
  102. EVoiceRecognitionClientWorkStatusChunkEnd, // CHUNK: 识别过程结束
  103. /* LOG */
  104. EVoiceRecognitionClientWorkStatusFeedback, // Feedback: 识别过程反馈的打点数据
  105. /* Only for iOS */
  106. EVoiceRecognitionClientWorkStatusRecorderEnd, // 录音机关闭,页面跳转需检测此时间,规避状态条 (iOS)
  107. /* LONG SPEECH END */
  108. EVoiceRecognitionClientWorkStatusLongSpeechEnd // 长语音结束状态
  109. } TBDVoiceRecognitionClientWorkStatus;
  110. #pragma mark - 语音识别错误通知状态分类
  111. typedef enum TVoiceRecognitionClientErrorDomain
  112. {
  113. EVRClientErrorDomainRecord = 10, // 录音设备出错
  114. EVRClientErrorDomainVAD = 20, // 语音数据处理过程出错
  115. EVRClientErrorDomainOnline = 30, // 在线识别引擎出错
  116. EVRClientErrorDomainLocalNetwork = 31, // 本地网络联接出错
  117. EVRClientErrorDomainHTTP = 32, // HTTP协议错误
  118. EVRClientErrorDomainServer = 33, // 服务器返回错误
  119. EVRClientErrorDomainOffline = 34, // 离线引擎返回错误
  120. EVRClientErrorDomainCommom = 40, // 其他错误
  121. } TVoiceRecognitionClientErrorDomain;
  122. #pragma mark - 语音识别错误通知状态
  123. typedef enum TVoiceRecognitionClientErrorCode
  124. {
  125. EVRClientErrorCodeRecoderException = (EVRClientErrorDomainRecord << 16) | (0x0000FFFF & 1), // 录音设备异常
  126. EVRClientErrorCodeRecoderNoPermission = (EVRClientErrorDomainRecord << 16) | (0x0000FFFF & 2), // 无录音权限
  127. EVRClientErrorCodeRecoderUnAvailable = (EVRClientErrorDomainRecord << 16) | (0x0000FFFF & 3), // 录音设备不可用
  128. EVRClientErrorCodeInterruption = (EVRClientErrorDomainRecord << 16) | (0x0000FFFF & 4), // 录音中断
  129. EVRClientErrorCodeVADException = (EVRClientErrorDomainVAD << 16) | (0x0000FFFF & 1), // 前端库异常
  130. EVRClientErrorCodeNoSpeech = (EVRClientErrorDomainVAD << 16) | (0x0000FFFF & 2), // 用户未说话
  131. EVRClientErrorCodeShort = (EVRClientErrorDomainVAD << 16) | (0x0000FFFF & 3), // 用户说话声音太短
  132. EVRClientErrorCodeDecoderExceptioin = (EVRClientErrorDomainOnline << 16) | (0x0000FFFF & 1), // 在线识别引擎异常
  133. EVRClientErrorCodeDecoderNetworkUnavailable = (EVRClientErrorDomainOnline << 16) | (0x0000FFFF & 2), // 网络不可用
  134. EVRClientErrorCodeDecoderTokenFailed = (EVRClientErrorDomainOnline << 16) | (0x0000FFFF & 3), // 获取token失败
  135. EVRClientErrorCodeDecoderResolveUrlFailed = (EVRClientErrorDomainOnline << 16) | (0x0000FFFF & 4), // 解析url失败
  136. EVRClientErrorCodeLocalTimeout = (EVRClientErrorDomainLocalNetwork << 16) | (0x0000FFFF & 1), // 请求超时
  137. EVRClientErrorCodeServerParamError = (EVRClientErrorDomainServer << 16) | (0x0000FFFF & -3001), // 协议参数错误
  138. EVRClientErrorCodeServerRecognError = (EVRClientErrorDomainServer << 16) | (0x0000FFFF & -3002), // 识别过程出错
  139. EVRClientErrorCodeServerNoFindResult = (EVRClientErrorDomainServer << 16) | (0x0000FFFF & -3003), // 没有找到匹配结果
  140. EVRClientErrorCodeServerAppNameUnknownError = (EVRClientErrorDomainServer << 16) | (0x0000FFFF & -3004), // AppnameUnkown错误
  141. EVRClientErrorCodeServerSpeechQualityProblem = (EVRClientErrorDomainServer << 16) | (0x0000FFFF & -3005), // 声音不符合识别要求
  142. EVRClientErrorCodeServerSpeechTooLong = (EVRClientErrorDomainServer << 16) | (0x0000FFFF & -3006), // 语音过长
  143. EVRClientErrorCodeCommonBusy = (EVRClientErrorDomainCommom << 16) | (0x0000FFFF & 1), // 识别器忙
  144. EVRClientErrorCodeCommonPropertyListInvalid = (EVRClientErrorDomainCommom << 16) | (0x0000FFFF & 2), // 垂类设置有误
  145. EVRClientErrorCodeCommonEnqueueError = (EVRClientErrorDomainCommom << 16) | (0x0000FFFF & 3) // 语音数据enqueue失败
  146. } TVoiceRecognitionClientErrorCode;
  147. #pragma mark - 调试日志级别
  148. typedef enum TBDVoiceRecognitionDebugLogLevel
  149. {
  150. EVRDebugLogLevelOff = 0,
  151. EVRDebugLogLevelFatal = 1,
  152. EVRDebugLogLevelError = 2,
  153. EVRDebugLogLevelWarning = 3,
  154. EVRDebugLogLevelInformation = 4,
  155. EVRDebugLogLevelDebug = 5,
  156. EVRDebugLogLevelTrace = 6
  157. } TBDVoiceRecognitionDebugLogLevel;
  158. #pragma mark - 语音压缩类型
  159. typedef enum TBDVoiceRecognitionPuncMode
  160. {
  161. EVR_PUNC_MODE_FULL = 0,
  162. EVR_PUNC_MODE_EMPTY = 1,
  163. EVR_PUNC_MODE_SIMPLE = 2,
  164. EVR_PUNC_MODE_SIMPLEST = 3,
  165. } TBDVoiceRecognitionPuncMode;
  166. #pragma mark - 语音压缩类型
  167. typedef enum TBDVoiceRecognitionAudioCompressionType
  168. {
  169. EVR_AUDIO_COMPRESSION_MIN = 0,
  170. EVR_AUDIO_COMPRESSION_PCM = 1,
  171. EVR_AUDIO_COMPRESSION_BV32 = 2,
  172. EVR_AUDIO_COMPRESSION_AMR = 3,
  173. EVR_AUDIO_COMPRESSION_MAX = 4,
  174. } TBDVoiceRecognitionAudioCompressionType;
  175. #pragma mark - 语音识别请求资源类型
  176. typedef enum TBDVoiceRecognitionProtocol
  177. {
  178. EPROTOCOL_DEFAULT = 0,
  179. EPROTOCOL_SEARCH_NBEST = 1,
  180. EPROTOCOL_INPUT_NBEST_PROTOCOL = 2,
  181. EPROTOCOL_POST_PROTOCOL = 101,
  182. EPROTOCOL_WISE_PROTOCOL = 300,
  183. EPROTOCOL_WISE_TEXT_PROTOCOL = 301,
  184. EPROTOCOL_AUDIO_DA_PROTOCOL = 302,
  185. EPROTOCOL_NLU_PROTOCOL = 303,
  186. EPROTOCOL_NLU_TEXT_PROTOCOL = 304,
  187. EPROTOCOL_WISE_NLU_PROTOCOL = 305,
  188. EPROTOCOL_TALK_PROTOCOL = 306,
  189. EPROTOCOL_SEARCH_MUSIC_PROTOCOL = 1000,
  190. } TBDVoiceRecognitionProtocol;
  191. #endif /* BDSASRDefines_h */