You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
2.9 KiB

import Foundation
/**
* ASR事件类型枚举
*/
@objc public enum AsrEventType: Int {
/** 会话开始 */
case sessionStarted
/** 会话结束 */
case sessionStopped
/** 识别中(中间结果) */
case recognizing
/** 识别完成(最终结果) */
case recognized
/** 识别取消 */
case canceled
/** 发生错误 */
case error
}
/**
* ASR事件数据类
*/
@objc public class AsrEvent: NSObject {
public let type: AsrEventType
public let params: [String: Any]
public init(type: AsrEventType, params: [String: Any] = [:]) {
self.type = type
self.params = params
}
}
/**
* ASR事件监听协议
*/
@objc public protocol AsrEventListener {
/**
* 当发生ASR事件时调用
*
* @param event ASR事件
*/
@objc(onAsrEvent:)
func onEvent(_ event: AsrEvent)
}
/**
* ASR服务通用协议
*
* 定义了语音识别服务的标准接口,可用于不同提供商的实现,如火山引擎、Azure等
*/
@objc public protocol IAsrService {
/**
* 初始化语音识别服务
*
* @param subscriptionKey 服务订阅密钥/访问令牌
* @param region 服务区域/应用ID
* @param supportedLanguages 支持的语言列表,如["zh-CN", "en-US"]
* @return 是否初始化成功
*/
func initialize(
subscriptionKey: String,
region: String,
supportedLanguages: [String]?
) -> Bool
/**
* 单次识别(非流式)
*
* @param audioData 要识别的音频数据字节数组
* @param callback 识别结果回调
* @return 是否成功开始识别
*/
func recognizeOnce(audioData: Data, callback: @escaping (String) -> Void) -> Bool
/**
* 启动连续识别
* 开始持续监听音频输入并识别
*
* @return 是否成功启动
*/
func startContinuousRecognition() -> Bool
/**
* 停止连续识别
*
* @return 是否成功停止
*/
func stopContinuousRecognition() -> Bool
/**
* 推送音频数据
* 在连续识别模式下推送新的音频数据
*
* @param audioData 要识别的音频数据字节数组
* @return 是否成功处理
*/
func pushAudioData(audioData: Data) -> Bool
/**
* 添加ASR事件监听器
*
* @param listener 事件监听器
*/
func addListener(_ listener: AsrEventListener)
/**
* 移除ASR事件监听器
*
* @param listener 要移除的事件监听器
*/
func removeListener(_ listener: AsrEventListener)
/**
* 释放资源
* 在不再需要服务时调用,释放底层资源
*/
func dispose()
/**
* 设置识别参数
*
* @param params 参数键值对
* @return 是否设置成功
*/
func setParameters(_ params: [String: Any]) -> Bool
}