Browse Source

fix(agent_service): 修复语音识别和文本处理中的状态管理问题

修复停止语音识别时未取消AI流的问题
调整文本输入处理前的状态重置逻辑
移除重复的TTS参数设置
weicu
liwei1dao 9 months ago
parent
commit
9874d9c73b
  1. 22
      local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift
  2. 1
      local_plugins/chat_storage/ios/chat_storage/Sources/chat_storage/ChatStorageHelper.swift

22
local_plugins/agent_service/ios/agent_service/Sources/agent_service/AgentServiceImpl.swift

@ -509,6 +509,10 @@ class AgentServiceImpl: NSObject {
}
}
stopRecognition()
if isAiStreaming {
isAiStreaming = false
_ = chatApiService?.cancelCurrentStream()
}
stopTts()
@ -537,7 +541,7 @@ class AgentServiceImpl: NSObject {
print("ai启动语音=\(audioSourceType)=\(useBle)")
guard let success = azureAsrHelper?.startContinuousRecognition(
// callback: self,
mod:self.currentRecognitionMode,
audioSourceType: audioSourceType,
isRemoveFirstPunctuation: false
), success else {
@ -642,9 +646,6 @@ class AgentServiceImpl: NSObject {
if text.isEmpty {
return false
}
_ = azureTtsHelper?.setSpeechParams(rate: ttsRatePercent, pitch: 0, volume: 100)
_ = azureTtsHelper?.setPhoneCallMode(mod: currentRecognitionMode)
return azureTtsHelper?.speakOnce(sessionid:sessionid,text) ?? false
}
@ -706,8 +707,16 @@ class AgentServiceImpl: NSObject {
sendError("文本输入不能为空", code: "EMPTY_TEXT")
return false
}
stopIdleCheck()
if isAiStreaming {
isAiStreaming = false
_ = chatApiService?.cancelCurrentStream()
}
stopTts()
currentRecognitionMode = "normal"
os_log("开始处理文本输入", log: logger, type: .info)
processWithChatApiService(sessionid: sessionid, text: text, speakResponse: speakResponse)
return true
}
@ -717,7 +726,8 @@ class AgentServiceImpl: NSObject {
sendError("ChatAPI服务未初始化", code: "CHATAPI_NOT_INITIALIZED")
return
}
_ = azureTtsHelper?.setSpeechParams(rate: ttsRatePercent, pitch: 0, volume: 100)
_ = azureTtsHelper?.setPhoneCallMode(mod: currentRecognitionMode)
let userMessage = chatApiService.createUserMessage(content: text)
processWithChatApiServiceInternal(sessionid: sessionid,userMessage: userMessage, displayText: text, speakResponse: speakResponse)
}

1
local_plugins/chat_storage/ios/chat_storage/Sources/chat_storage/ChatStorageHelper.swift

@ -245,7 +245,6 @@ public class ChatStorageHelper {
sqlite3_bind_text(deleteStatement, 1, (agentId as NSString).utf8String, -1, nil)
if sqlite3_step(deleteStatement) == SQLITE_DONE {
sqlite3_finalize(deleteStatement)
result = true
} else {
let errmsg = String(cString: sqlite3_errmsg(db)!)

Loading…
Cancel
Save