webkitSpeechRecognition:HTML5语音识别文字(直接运行)

前端想要实现语音转文字,其实不需要任何云服务,浏览器自带的api就能搞定。

下面是已经封装好的代码,

复制之后可以在控制台只接运行

 



class SpeechRecognitionManager {
    tempTranscript = ''
    isRecording = false;
    timeoutid = 0;
    exitKeywors = ['stop', 'exit', 'quit', '退出', '停止识别', '说完了', '停止', '发送', '好了']
    constructor() {
        this.recognition = new webkitSpeechRecognition();
        this.recognition.continuous = true;
        this.recognition.interimResultsTimeout = 30000;
        this.recognition.lang = 'zh-CN';
        this.recognition.maxSpeechTime = 60000;
        this.resultListeners = [];

        this.recognition.onresult = (event) => {
            const transcript = Array.from(event.results).at(-1)[0].transcript;
### 实现 WebkitSpeechRecognition 语音识别功能 在 Vue2 项目中集成 `WebkitSpeechRecognition` 可以为用户提供便捷的语音输入体验。需要注意的是,此 API 主要由 Chrome 浏览器支持,在其他浏览器中的兼容性有限。 为了确保最佳用户体验,建议先检测用户的浏览器环境是否支持该特性[^1]: ```javascript if (!('webkitSpeechRecognition' in window)) { console.log("当前浏览器不支持 Web Speech API"); } else { const recognition = new webkitSpeechRecognition(); } ``` 创建并配置 `webkitSpeechRecognition` 对象实例来启动监听服务: ```javascript const recognition = new webkitSpeechRecognition(); // 设置属性 recognition.continuous = true; // 是否连续识别多个片段,默认false recognition.interimResults = false; // 是否返回中间结果,默认false recognition.lang = 'zh-CN'; // 设定使用的语言模型 ``` 定义事件处理函数用于接收识别结果以及错误通知: ```javascript let finalTranscript = ''; recognition.onresult = function(event) { let interimTranscript = ''; for (let i = event.resultIndex; i < event.results.length; ++i) { if (event.results[i].isFinal) { finalTranscript += event.results[i][0].transcript; } else { interimTranscript += event.results[i][0].transcript; } } document.querySelector('#output').innerHTML = finalTranscript + interimTranscript; }; recognition.onerror = function(event) { console.error(`Error occurred: ${event.error}`); }; ``` 最后编写一个简单的按钮组件触发录音操作,并将其嵌入到 Vue 组件模板里: ```html <template> <div id="app"> <button @click="startListening">点击说话</button> <p>{{ transcript }}</p> </div> </template> <script> export default { data() { return { transcript: '' }; }, methods: { startListening() { this.recognition.start(); }, initRecognition() { if ('webkitSpeechRecognition' in window) { const recognition = new webkitSpeechRecognition(); recognition.continuous = true; recognition.interimResults = false; recognition.lang = 'zh-CN'; recognition.onresult = (event) => { let resultText = ''; for (let i = event.resultIndex; i < event.results.length; ++i) { if (event.results[i].isFinal) { resultText += event.results[i][0].transcript; } } this.transcript = resultText; }; recognition.onerror = (event) => { console.error(`Error occurred during speech recognition: ${event.error}`); }; this.recognition = recognition; } else { alert("您的浏览器不支持 Web Speech API."); } } }, mounted() { this.initRecognition(); } </script> ``` #### 兼容性说明 由于 Web Speech API 尤其是其中的 `webkitSpeechRecognition` 接口主要依赖于 Chromium 内核的支持,因此只会在基于此类引擎构建的产品上正常工作,比如 Google Chrome 和 Microsoft Edge 新版本。对于 Firefox 或 Safari 用户来说,则可能无法正常使用这些特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值