Browse Source

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

修复停止语音识别时未取消AI流的问题
调整文本输入处理前的状态重置逻辑
移除重复的TTS参数设置
newdev_shunjiawei
liwei1dao 9 months ago
parent
commit
ed71e52f45
  1. 20
      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

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

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

Loading…
Cancel
Save