From 8b5326d821d4ed8c4247d72eaa7265f4b22018db Mon Sep 17 00:00:00 2001 From: liou Date: Thu, 30 Mar 2023 00:27:53 +0800 Subject: [PATCH] feat: recognizeSpeech --- src/components/Content.vue | 46 +++++++++++++++++++++----------------- src/utils/speaker.ts | 31 ++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 22 deletions(-) diff --git a/src/components/Content.vue b/src/components/Content.vue index e3e2518..026b45d 100644 --- a/src/components/Content.vue +++ b/src/components/Content.vue @@ -10,7 +10,8 @@ const chatMessages = ref([]) const message = ref('') const loading = ref(false) const text = ref('') -const speechService = new SpeechService(VITE_SCRIPTION_KEY, VITE_REGION) +const speechService = ref(new SpeechService(VITE_SCRIPTION_KEY, VITE_REGION)) +const isRecognizing = computed(() => speechService.value.isRecognizing) // hooks const { el, scrollToBottom } = useScroll() @@ -30,24 +31,6 @@ const roleClass = (role: string) => { return 'bg-gray-500' } } - -const speak = (content: string) => { - text.value = content - speechService.textToSpeak(content) -} - -const recognize = async () => { - loading.value = true - try { - const text = await speechService.recognizeSpeech() - console.log(text) - loading.value = false - } - catch (error) { - loading.value = false - } -} - const onSubmit = async () => { const key = getKey() if (!verifyKey(key)) return alert('请输入正确的API-KEY') @@ -70,6 +53,23 @@ const onSubmit = async () => { }) loading.value = false } + +function speak(content: string) { + text.value = content + speechService.value.textToSpeak(content) +} + +const recognize = async () => { + console.log(isRecognizing.value) + if (isRecognizing.value) { + const result = await speechService.value.stopRecognizeSpeech() + message.value = result + onSubmit() + } + else { + speechService.value.startRecognizeSpeech() + } +}