vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能包括PC端web手機(jī)端web(實(shí)現(xiàn)過(guò)程)
vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能,包括PC端,手機(jī)端和企業(yè)微信自建應(yīng)用端
不止vue,不限技術(shù)棧,vue2、vue3、react、.net以及原生js均可實(shí)現(xiàn)。
原理
瀏覽器實(shí)現(xiàn)錄音并轉(zhuǎn)文字最快捷的方法是通過(guò)Web Speech API來(lái)實(shí)現(xiàn),這是瀏覽器內(nèi)置示例的api方法,可以直接調(diào)用,無(wú)需引入任何依賴包,唯一需要注意的是瀏覽器的兼容性,具體可查看官方文檔
鏈接: Web Speech API
實(shí)現(xiàn)過(guò)程
<template> <button @click="toggleSpeechRecognition ">{{ isSpeaking?'開(kāi)始':'停止' }}錄音</button> <span>{{ prompt }}</span> </template> <script setup lang="ts"> import { ref } from 'vue' //測(cè)試語(yǔ)音識(shí)別 const prompt = ref('') const isSpeaking = ref(false); let recognition: any = null; let finalResult = ''; // 保存最終結(jié)果的變量 let interimResult = ''; // 保存中間結(jié)果的變量 const toggleSpeechRecognition = () => { if (!recognition) { recognition = new webkitSpeechRecognition(); recognition.continuous = true; recognition.interimResults = true; recognition.lang = 'zh-CN'; recognition.onresult = event => { interimResult = ''; // 清空中間結(jié)果 for (let i = event.resultIndex; i < event.results.length; i++) { if (event.results[i].isFinal) { finalResult += event.results[i][0].transcript; } else { interimResult += event.results[i][0].transcript; } } prompt.value = finalResult + interimResult; }; } if (isSpeaking.value) { finalResult = ''; recognition.stop(); } else { recognition.start(); } isSpeaking.value = !isSpeaking.value; }; </script>
避坑指南
1.http問(wèn)題導(dǎo)致錄音失?。何蚁嘈?9.9%的人本地開(kāi)發(fā)環(huán)境啟動(dòng)的都是http,當(dāng)前主流瀏覽器出于安全考慮禁止http的應(yīng)用調(diào)用麥克風(fēng),需要在瀏覽器高級(jí)設(shè)置中添加白名單,具體操作為:
chrome瀏覽器地址欄中輸入chrome://flags/#unsafely-treat-insecure-origin-as-secure,回車,在Insecure origins treated as secure這欄中添加你的應(yīng)用地址,將該選項(xiàng)置為Enabled,然后點(diǎn)擊右下角彈出的Relaunch按鈕。
edge瀏覽器打開(kāi):edge://flags/#unsafely-treat-insecure-origin-as-secure,同上。
這里需要注意的是,你的電腦需要有音頻錄入設(shè)備,檢查順序?yàn)椋合葯z查電腦是否有音頻錄入設(shè)備(是否正常)-> 再添加瀏覽器安全白名單。
2.應(yīng)用是否被其他規(guī)則限制調(diào)用麥克風(fēng)
1.iframe內(nèi)部應(yīng)用不允許直接調(diào)用麥克風(fēng),只能通過(guò)postMassage實(shí)現(xiàn)iframe內(nèi)外部通信,調(diào)用外部系統(tǒng)的方法來(lái)調(diào)用麥克風(fēng),具體我會(huì)在單獨(dú)的文章將iframe內(nèi)外部通信;
2.如果應(yīng)用嵌在企微工作臺(tái)或類似的平臺(tái)中,麥克風(fēng)權(quán)限首先受企微等平臺(tái)的權(quán)限管控,一般都需要調(diào)用企微官方api來(lái)實(shí)現(xiàn)類似功能。
到此這篇關(guān)于vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能,包括PC端web,手機(jī)端web的文章就介紹到這了,更多相關(guān)vue錄音轉(zhuǎn)文字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3+echarts實(shí)現(xiàn)好看的圓角環(huán)形圖
這篇文章主要介紹了vue3+echarts實(shí)現(xiàn)好看的圓角環(huán)形圖效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue + AnimeJS實(shí)現(xiàn)3d輪播圖的詳細(xì)代碼
輪播圖在開(kāi)發(fā)中是經(jīng)常用到的,3D輪播圖是其中最常用的一種,所以在這篇文章中將給大家介紹Vue + AnimeJS實(shí)現(xiàn)3d輪播圖,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01詳解用vue-cli來(lái)搭建vue項(xiàng)目和webpack
本篇文章主要介紹了詳解用vue-cli來(lái)搭建vue項(xiàng)目和webpack,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04vue3+element-plus props中的變量使用 v-model 報(bào)錯(cuò)及解決方案
這篇文章主要介紹了vue3+element-plus props中的變量使用 v-model 報(bào)錯(cuò)及解決方案,prop 是單向數(shù)據(jù)流,這里只能用:model-value,不能用v-model,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10Vue實(shí)現(xiàn)組件間通信的幾種方式(多種場(chǎng)景)
本文主要介紹了Vue實(shí)現(xiàn)組件間通信的幾種方式,不同的場(chǎng)景使用不同的方式,基本滿足所有開(kāi)發(fā)場(chǎng)景中的通信需求,感興趣的可以了解一下2021-10-10vue使用@include或@mixin報(bào)錯(cuò)的問(wèn)題及解決
這篇文章主要介紹了vue使用@include或@mixin報(bào)錯(cuò)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02vue的Virtual Dom實(shí)現(xiàn)snabbdom解密
這篇文章主要介紹了vue的Virtual Dom實(shí)現(xiàn)- snabbdom解密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Vue3集成json-editor-vue3的代碼實(shí)現(xiàn)
這篇文章主要介紹了Vue3集成json-editor-vue3的代碼實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11Python實(shí)現(xiàn)圖片二值化的詳細(xì)代碼
圖像二值化就是將圖像上的像素點(diǎn)的“灰度值”設(shè)置為[0,?0,?0]或[255,?255,?255],即要么純黑,要么純白,這篇文章主要介紹了Python實(shí)現(xiàn)圖片二值化,需要的朋友可以參考下2024-05-05