|
@@ -401,9 +401,8 @@ watch(streamConversationId, (newId) => {
|
|
|
// 监听 showChat 变化,开始对话时自动启动语音识别
|
|
// 监听 showChat 变化,开始对话时自动启动语音识别
|
|
|
watch(showChat, async (newVal) => {
|
|
watch(showChat, async (newVal) => {
|
|
|
if (newVal && !isRecording.value) {
|
|
if (newVal && !isRecording.value) {
|
|
|
- // 尝试启动语音识别,最多重试 3 次
|
|
|
|
|
|
|
+ // 无限重试语音识别,重试间隔逐渐增加
|
|
|
let retryCount = 0
|
|
let retryCount = 0
|
|
|
- const maxRetries = 3
|
|
|
|
|
|
|
|
|
|
const tryStartRecording = async () => {
|
|
const tryStartRecording = async () => {
|
|
|
try {
|
|
try {
|
|
@@ -415,19 +414,16 @@ watch(showChat, async (newVal) => {
|
|
|
return true
|
|
return true
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
retryCount++
|
|
retryCount++
|
|
|
- console.error(`语音识别启动失败 (尝试 ${retryCount}/${maxRetries}):`, error)
|
|
|
|
|
-
|
|
|
|
|
- if (retryCount < maxRetries) {
|
|
|
|
|
- ElMessage.warning(`语音识别启动失败,正在重试 (${retryCount}/${maxRetries})...`)
|
|
|
|
|
- // 等待 1 秒后重试
|
|
|
|
|
- await new Promise(resolve => setTimeout(resolve, 1000))
|
|
|
|
|
- return tryStartRecording()
|
|
|
|
|
- } else {
|
|
|
|
|
- ElMessage.error('语音识别启动失败,已切换到文字输入模式')
|
|
|
|
|
- // 多次重试都失败,切换到文字输入模式
|
|
|
|
|
- isTextInput.value = true
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ console.error(`语音识别启动失败 (尝试 ${retryCount} 次):`, error)
|
|
|
|
|
+
|
|
|
|
|
+ // 固定重试间隔:2秒
|
|
|
|
|
+ const retryDelay = 2000
|
|
|
|
|
+
|
|
|
|
|
+ ElMessage.warning(`语音识别启动失败,2秒后重试...`)
|
|
|
|
|
+
|
|
|
|
|
+ // 等待后重试
|
|
|
|
|
+ await new Promise(resolve => setTimeout(resolve, retryDelay))
|
|
|
|
|
+ return tryStartRecording()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|