前端语音识别(webkitSpeechRecognition)

这篇具有很好参考价值的文章主要介绍了前端语音识别(webkitSpeechRecognition)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:需要在浏览器(pc)实现语音转文字。

webkitSpeechRecognition(语音识别)

// 创建一个webkitSpeechRecognition实例
let newRecognition = new webkitSpeechRecognition();
// 设置识别到声音就关闭还是一直识别
newRecognition.continuous = true;
// 开启录音
newRecognition.start();
// 关闭录音
newRecognition.stop();
// 识别到结果即触发,所以讲话过程多次停顿的情况下会触发多次
newRecognition.onresult = function(event) { 
    console.log(event);
}
// 基本以上就已经达到了语音转文字的功能,下面是一些其他事件
//只要开始讲话了,就会触发onsoundstart和onspeechstart事件
newRecognition.onsoundstart = function(e){
    console.log("开始收听了");
    console.log(e);
}
newRecognition.onspeechstart = (e)=>{
    console.log("开始讲话了");
    console.log(e);
}
// onspeechend事件应该是监测到执行了stop方法时触发的。而如果一段时间没有录入信息,则会自动执行stop方法停止录音,同样也会触发onspeechend事件
newRecognition.onspeechend = (e)=>{
    console.log("讲话完毕");
    console.log(e);
}
// onerror很明显是有异常时会触发该事件,测试发现当长时间没有录入导致自动关闭录音的时候就会触发该事件
newRecognition.onerror = (e)=>{
    console.log("发生异常");
    console.log(e);
}

vue3.0 demo

存在兼容问题,本人测试谷歌浏览器并不能正常使用(不排除版本较低的缘故),safari浏览器正常。

<template>
    <div>
        <textarea
            name="语音转文字内容区"
            id="area"
            cols="30"
            rows="10"
            placeholder="说点什么吧..."
            ref="areaRef"
            v-model="textInp"></textarea>
        <div>
            <button @click="speek">🎤</button>
            <p @click="addText">发布</p>
        </div>
        <ul v-show="list.length > 0">
            <li v-for="(item,index) in list" :key="index">{{ item }}</li>
        </ul>
    </div>
</template>

<script>
import { reactive, toRefs, ref } from 'vue'

export default {
    setup () {
        const areaRef = ref(null)
        const state = reactive({
            list: [],
            textInp: '',
            isGoing: false
        })
        var recognition = new window.webkitSpeechRecognition();
        recognition.continuous = true;
        recognition.interimResults = true;
        recognition.lang = 'zh-CN';
        recognition.onresult=function(event) {
            let result = ''
            for(let i = 0;i <= event.resultIndex; i++) {
                result += event.results[i][0].transcript;
            }
            state.textInp = result
        }
		/** 开始 / 结束 录音 */
        function speek(){
            if(state.isGoing) {
                recognition.stop();
                state.isGoing = false;
            }
            else {
                recognition.start();
                state.isGoing = true;
            }
            
        }
		/** 发布 */
        function addText(){
            state.list.push(state.textInp);
            state.textInp = '';
        }

        return {
            ...toRefs(state),
            areaRef,
            addText,
            speek
        }
    }
}
</script>

<style lang="scss" scoped>

</style>

SpeechSynthesisUtterance(语音合成)

基础测试

var ssu = new window.SpeechSynthesisUtterance('Hi,girl!');
window.speechSynthesis.speak(ssu);

SpeechSynthesisUtterance对象提供了一些其他属性供设置:

  • lang:使用的语言,字符串(比如:“zh-cn”)
  • volume:音量,值在0-1之间(默认是1)
  • rate:语速的倍数,值在0.1-10之间(默认1倍)
  • pitch:音高,值在0-2之间,(默认是1)
  • voiceURI:指定希望使用的声音,字符串
  • onstart:语音开始合成时触发
  • onpause:语音暂停时触发
  • onresume:语音合成重新开始时触发
  • onend:语音结束时触发
var ssu = new window.SpeechSynthesisUtterance();
ssu.text = 'Hi,girl!';
ssu.volume = 0.5;
ssu.rate = 1

speechSynthesis对象
创建完SpeechSynthesisUtterance对象之后,把这个对象传递给speechSynthesis对象的speak方法中。文章来源地址https://www.toymoban.com/news/detail-734350.html

  • stop():停止合成
  • pause():暂停合成
  • resume():重新开始合成
  • getVoices():返回浏览器支持的语音包数组
window.addEventListener("click", ()=>{
    window.speechSynthesis.pause(); // 点击暂停
});
console.log(window.speechSynthesis.getVoices()); //我的chrome浏览器下竟然是空数组。。wtf
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>语音转文字</title>
    <style>
        textarea {
            width: 100%;
            height: 50px;
        }
    </style>
</head>
<body>
    <div>
        <textarea shape="" coords="" href="" alt="" id="area" placeholder="请说点什么..."></textarea>
        <button id="speek">麦克风</button>
        <button id="addBtn">发布</button>
        <ul id="text"></ul>
    </div>

    <script>
        window.onload = () => {
            console.log('页面加载完毕');
            const area = document.querySelector('#area');
            const speek = document.querySelector('#speek');
            const addBtn = document.querySelector('#addBtn');
            const text = document.querySelector('#text');
            const recognition = new webkitSpeechRecognition();
            let isSpeek = false;

            recognition.continuous = true;
            recognition.interimResults = true;
            recognition.lang = 'zh-CN';
            recognition.onresult=function(event) {
                let result = ''
                for(let i = event.resultIndex;i <= event.resultIndex; i++) {
                    if (event.results[i].isFinal) {
                        result += event.results[i][0].transcript;
                    }
                }
                area.value = result
            }

            speek.addEventListener('click', () => {
                if(isSpeek) {
                    recognition.stop();
                    isSpeek = false;
                    return;
                }
                recognition.start();
                isSpeek = true;
            })

            addBtn.addEventListener('click', () => {
                const li = document.createElement('li');
                li.textContent = area.value;
                text.appendChild(li);
                area.value = '';
            })

        }

    </script>
</body>
</html>

到了这里,关于前端语音识别(webkitSpeechRecognition)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 构建基于AWSLambda的人工智能应用:语音识别、图像识别和自然语言处理

    作者:禅与计算机程序设计艺术 在人工智能领域,用大数据、机器学习等方法来解决复杂的问题,已经成为越来越多企业和开发者关注的问题。但是,如何把这些方法落地到生产环境中,仍然是一个难题。 随着云计算平台的广泛普及,AWS Lambda作为一项服务正在成为各个公司

    2024年02月09日
    浏览(53)
  • 语音识别与VC维:改变人工智能的未来

    语音识别(Speech Recognition)是一种人工智能技术,它旨在将人类的语音信号转换为文本或其他形式的数据。这项技术在过去几年中得到了巨大的发展,并成为人工智能领域的一个关键技术。VC维(Vocabulary Coverage Dimension)是一种数学模型,用于描述语言模型的表达能力。在本文中,

    2024年02月19日
    浏览(45)
  • 人工智能-语音识别技术paddlespeech的搭建和使用

    PaddleSpeech是百度飞桨(PaddlePaddle)开源深度学习平台的其中一个项目,它基于飞桨的语音方向模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型。PaddleSpeech支持语音识别、语音翻译(英译中)、语音合成、标点恢复等应用示例。

    2024年02月02日
    浏览(41)
  • 【人工智能】科大讯飞语音识别应用开发(第三集)

    这次需要对科大讯飞语音识别接口进行语音识别应用开发,前两次都是通过WebAPI调用接口,这次换一下,通过SDK调用接口 下面是开发的详细记录过程(基于前两次的基础上) 网址:https://www.xfyun.cn/services/voicedictation 不领服务量为500且该包免费( 貌似是不同应用都可以免费领

    2024年02月13日
    浏览(37)
  • 智能语音识别在人工智能应用中的重要性

    作者:禅与计算机程序设计艺术 随着计算机的发展、移动互联网的普及和互联网服务的快速发展,语音识别技术也逐渐走入人们的视野中。相对于手写文字或是拼音方式输入的方式,语音输入的方式带来的便利、准确率提高的效果,使得越来越多的人开始喜欢用语音的方式来

    2024年02月07日
    浏览(51)
  • OpenAI的人工智能语音识别模型Whisper详解及使用

            拥有ChatGPT语言模型的OpenAI公司,开源了 Whisper 自动语音识别系统,OpenAI 强调 Whisper 的语音识别能力已达到人类水准。         Whisper是一个通用的语音识别模型,它使用了大量的多语言和多任务的监督数据来训练,能够在英语语音识别上达到接近人类水平的鲁

    2024年02月09日
    浏览(42)
  • 极速进化,光速转录,C++版本人工智能实时语音转文字(字幕/语音识别)Whisper.cpp实践

    业界良心OpenAI开源的Whisper模型是开源语音转文字领域的执牛耳者,白璧微瑕之处在于无法通过苹果M芯片优化转录效率,Whisper.cpp 则是 Whisper 模型的 C/C++ 移植版本,它具有无依赖项、内存使用量低等特点,重要的是增加了 Core ML 支持,完美适配苹果M系列芯片。 Whisper.cpp的张量

    2024年02月02日
    浏览(52)
  • 人工智能技术在智能音箱中的应用:智能语音识别与智能交互

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 智能音箱作为智能家居的重要组成部分,近年来得到了越来越多的用户青睐。随着人工智能技术的不断发展,智能音箱的核心功能之一——智能语音识别与智能交互也越来越受到人们的关注。智能语音识别技术可以让用户更

    2024年02月07日
    浏览(41)
  • 【Elsevier旗下】1区SCI,5天见刊!稳定检索36年,大数据、人工智能、机器学习、语音、语言、会话、情绪识别等领域

    近日 国自然预计将在下周8月20日之前公布 ,想必申请过国自然基金作者都知道,需要有研究基础,说白了就是需要有文章支持。那么稿子写好了,选择一本靠谱优质期刊也是一门学问。 本期小编推荐2本Elsevier 旗下审稿快刊,各项指标优秀,实为评职晋升、申报基金之首选

    2024年02月13日
    浏览(36)
  • 【人工智能124种任务大集合】-集齐了自然语言处理(NLP),计算机视觉(CV),语音识别,多模态等任务

    大家好,我是微学AI,今天给大家介绍一下人工智能124种任务大集合,任务集合主要包括4大类:自然语言处理(NLP)、计算机视觉(CV)、语音识别、多模态任务。 我这里整理了124种应用场景任务大集合,每个任务目录如下: 句子嵌入(Sentence Embedding):将句子映射到固定维

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包