week11 智能语音输入

面对一个智能助手,我认为语音识别可能是一大重点。比如siri和小爱同学,都具有语音识别以及回应的功能,于是我也在想如何将语音助手的功能也加到我们的AI助手里面。

const recognition = window.SpeechRecognition || window.webkitSpeechRecognition
  ? new (window.SpeechRecognition || window.webkitSpeechRecognition)()
  : null

写于前端的代码:

vue\src\views\LessonPlanGenerator.vue:365

利用window.webkitSpeechRecognitionwindow.SpeechRecognition来初始化语音识别对象

 const recognition = window.SpeechRecognition || window.webkitSpeechRecognition ? new (window.SpeechRecognition || window.webkitSpeechRecognition)() : null

开始语音输入:通过 startVoiceInput 方法(391行)启动语音识别,用户可以通过语音输入教案需求。

const startVoiceInput = () => {
  if (!recognition) {
    ElMessage.error('当前浏览器不支持语音识别')
    return
  }
  showVoiceDialog.value = true
  isListening.value = true
  isEditing.value = false
  recognition.lang = 'zh-CN'
  recognition.interimResults = true
  recognition.maxAlternatives = 1
  recognition.continuous = true
  recognition.start()
  ElMessage.info('请开始说出教案需求...')
}

停止语音输入:通过 stopVoiceInput 方法(413行)停止语音识别,保存当前文本。

const stopVoiceInput = () => {
  if (recognition) {
    recognition.stop()
  }
  isListening.value = false
  previousText.value = voiceText.value
}

清空语音输入:通过 clearVoiceInput 方法(422行)清空语音输入内容。

const clearVoiceInput = () => {
  voiceText.value = ''
  finalTranscript = ''
  isEditing.value = false
  if (recognition) {
    recognition.stop()
  }
  isListening.value = false
  showVoiceDialog.value = false
}

语音输入生成教案

在语音输入完成后,我们调用generateFromVoice方法,将语音内容作为教案主题,自动填充其他字段,并生成教案:

const generateFromVoice = async () => {
  if (!voiceText.value) {
    ElMessage.warning('请先输入语音内容')
    return
  }
  try {
    isGenerating.value = true
    startTimer()
    const data = {
      topic: voiceText.value.trim(),
      subject: '根据topic值',
      grade: '根据topic值',
      duration: '根据topic值',
      objectives: ['根据topic值'],
      keyPoints: '根据topic值',
      materials: '根据topic值',
      methods: ['根据topic值'],
      steps: ['根据topic值'],
      homework: '根据topic值',
      reflection: '根据topic值',
      educationMode: '根据topic值',
      isVoiceInput: true
    }
    const result = await generateLessonPlanService(data)
    const filename = result.filename || (result.data && result.data.filename)
    const success = result.code === 0 || result.status === 'success'
    if (success && filename) {
      ElMessage.success('教案生成成功!正在下载...')
      await downloadLessonPlan(filename)
    } else {
      ElMessage.error(result.message || '教案生成失败')
    }
  } catch (error) {
    ElMessage.error('教案生成失败:' + (error.message || '网络错误'))
  } finally {
    isGenerating.value = false
    stopTimer()
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值