|
|
@@ -108,8 +108,6 @@ const toggleSpeechInput = () => {
|
|
|
// 手动停止时重置状态
|
|
|
countdown.value = 0
|
|
|
recognition.value?.stop()
|
|
|
- isRecording.value = false
|
|
|
- emit('recordingStatusChanged', false)
|
|
|
} else {
|
|
|
// 初始化倒计时前再次清除定时器(防止快速点击)
|
|
|
clearInterval(countdownTimer.value)
|
|
|
@@ -119,31 +117,28 @@ const toggleSpeechInput = () => {
|
|
|
if (!recognition.value) return
|
|
|
|
|
|
navigator.mediaDevices.getUserMedia({ audio: true })
|
|
|
- .then(() => {
|
|
|
- recognition.value.start()
|
|
|
- isRecording.value = true
|
|
|
- emit('recordingStatusChanged', true)
|
|
|
-
|
|
|
- // 启动新的倒计时定时器
|
|
|
- countdownTimer.value = setInterval(() => {
|
|
|
- countdown.value--
|
|
|
- if (countdown.value <= 0) {
|
|
|
- clearInterval(countdownTimer.value) // 倒计时结束清除
|
|
|
- recognition.value.stop()
|
|
|
- isRecording.value = false
|
|
|
- emit('recordingStatusChanged', false)
|
|
|
- countdown.value = 0
|
|
|
- }
|
|
|
- }, 1000)
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error('麦克风权限获取失败:', err)
|
|
|
- ElMessage.warning('请允许麦克风权限以使用语音输入')
|
|
|
- // 出错时重置状态
|
|
|
- isRecording.value = false
|
|
|
- emit('recordingStatusChanged', false)
|
|
|
- countdown.value = 0
|
|
|
- })
|
|
|
+ .then(() => {
|
|
|
+ recognition.value.start()
|
|
|
+ isRecording.value = true
|
|
|
+ emit('recordingStatusChanged', true)
|
|
|
+
|
|
|
+ // 启动新的倒计时定时器
|
|
|
+ countdownTimer.value = setInterval(() => {
|
|
|
+ countdown.value--
|
|
|
+ if (countdown.value <= 0) {
|
|
|
+ clearInterval(countdownTimer.value) // 倒计时结束清除
|
|
|
+ recognition.value.stop()
|
|
|
+ }
|
|
|
+ }, 1000)
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ console.error('麦克风权限获取失败:', err)
|
|
|
+ ElMessage.warning('请允许麦克风权限以使用语音输入')
|
|
|
+ // 出错时重置状态
|
|
|
+ isRecording.value = false
|
|
|
+ emit('recordingStatusChanged', false)
|
|
|
+ countdown.value = 0
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
|