|
|
@ -103,7 +103,6 @@ class AgentServiceImpl: NSObject { |
|
|
private let maxIdleSeconds: TimeInterval = 5 |
|
|
private let maxIdleSeconds: TimeInterval = 5 |
|
|
var micCapture: MicrophoneCapture! |
|
|
var micCapture: MicrophoneCapture! |
|
|
// 语音识别模式 |
|
|
// 语音识别模式 |
|
|
private var lastRecognitionMode: String = "normal" |
|
|
|
|
|
public var currentRecognitionMode: String = "normal" |
|
|
public var currentRecognitionMode: String = "normal" |
|
|
// 识别结果 |
|
|
// 识别结果 |
|
|
private var recognitionResult = "" |
|
|
private var recognitionResult = "" |
|
|
@ -489,7 +488,7 @@ class AgentServiceImpl: NSObject { |
|
|
startIdleCheckForMode(mode: currentRecognitionMode) |
|
|
startIdleCheckForMode(mode: currentRecognitionMode) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
func startRecognition(useBle: Bool = false, mode: String = "normal") -> Bool { |
|
|
func startRecognition(useBle: Bool = false, mode: String = "normal") -> Bool { |
|
|
// 接收到唤醒信号,打开编码器 (设备侧) |
|
|
// 接收到唤醒信号,打开编码器 (设备侧) |
|
|
print("ai启动语音\(useBle))") |
|
|
print("ai启动语音\(useBle))") |
|
|
var openResult = false // 添加openResult变量定义 |
|
|
var openResult = false // 添加openResult变量定义 |
|
|
@ -508,12 +507,7 @@ class AgentServiceImpl: NSObject { |
|
|
sendError("无麦克风权限", code: "PERMISSION_DENIED") |
|
|
sendError("无麦克风权限", code: "PERMISSION_DENIED") |
|
|
return false |
|
|
return false |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
lastRecognitionMode = currentRecognitionMode |
|
|
|
|
|
if (lastRecognitionMode == "ble_wakeup" && mode != "ble_wakeup"){//之前是唤醒模式,现在不是唤醒模式 |
|
|
|
|
|
os_log("liwei------- 关闭唤醒通道", log: logger, type: .info) |
|
|
|
|
|
BleService.shared.closeCodec() |
|
|
|
|
|
} |
|
|
|
|
|
stopRecognition() |
|
|
stopRecognition() |
|
|
if isAiStreaming { |
|
|
if isAiStreaming { |
|
|
isAiStreaming = false |
|
|
isAiStreaming = false |
|
|
@ -529,12 +523,19 @@ class AgentServiceImpl: NSObject { |
|
|
if MusicService.shared.isPlaying { |
|
|
if MusicService.shared.isPlaying { |
|
|
MusicService.shared.pause() |
|
|
MusicService.shared.pause() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 设置当前识别模式 |
|
|
// 设置当前识别模式 |
|
|
currentRecognitionMode = mode |
|
|
currentRecognitionMode = mode |
|
|
os_log("liwei--------------- 设置语音识别模式: %{public}@", log: logger, type: .info, mode) |
|
|
os_log("liwei--------------- 设置语音识别模式: %{public}@", log: logger, type: .info, mode) |
|
|
|
|
|
|
|
|
let audioSourceType: AzureAsrHelper.AudioSourceType = useBle ? .external : .microphone |
|
|
let audioSourceType: AzureAsrHelper.AudioSourceType = useBle ? .external : .microphone |
|
|
|
|
|
|
|
|
|
|
|
if useBle { |
|
|
|
|
|
// AudioSessionHub.shared.begin(.playback) |
|
|
|
|
|
} else { |
|
|
|
|
|
//AudioSessionHub.shared.begin(.voice) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 新增:标记为"启动中",用于允许 stop 在启动未完成时也能生效 |
|
|
// 新增:标记为"启动中",用于允许 stop 在启动未完成时也能生效 |
|
|
isStartingRecognition = true |
|
|
isStartingRecognition = true |
|
|
|
|
|
|
|
|
@ -550,8 +551,8 @@ class AgentServiceImpl: NSObject { |
|
|
return false |
|
|
return false |
|
|
} |
|
|
} |
|
|
if(useBle){ |
|
|
if(useBle){ |
|
|
isKeepResult = true |
|
|
isKeepResult = true |
|
|
} |
|
|
} |
|
|
// 根据模式启动相应的空闲检测(此处 guard isRecognizing,会在 onSessionStarted 中再次启动) |
|
|
// 根据模式启动相应的空闲检测(此处 guard isRecognizing,会在 onSessionStarted 中再次启动) |
|
|
startIdleCheckForMode(mode: mode) |
|
|
startIdleCheckForMode(mode: mode) |
|
|
|
|
|
|
|
|
|