首页 web前端 js教程 将语音搜索添加到React应用程序

将语音搜索添加到React应用程序

Feb 09, 2025 am 09:30 AM

Adding Voice Search to a React Application

语音命令不仅适用于Google Assistant或Alexa等虚拟助手。 它们可以显着增强移动和桌面应用程序,从而增加功能和有趣的用户体验。 集成语音命令或语音搜索非常简单。本文展示了使用React框架中的Web语音API构建语音控制的书籍搜索应用程序。

>

完整的代码可在GitHub上找到,最后提供了一个工作演示。

密钥概念:

>利用Web语音API在React应用程序中启用语音搜索,改善用户互动。
  • 构建基本的React组件(使用Create React App),然后集成Web语音API以识别语音。
  • >在React组件生命周期内实现连续的语音识别,用React Hooks管理状态。
  • 开发一个自定义react钩(
  • )以封装和重复使用语音识别逻辑。
  • useVoice>通过使用另一个自定义钩(
  • )集成书籍搜索功能,与外部API(OPEN库)进行数据检索,以基于语音输入进行数据检索。
  • useBookFetch
  • 网络语音API简介:

> 网络语音API的浏览器支持有限。 确保您使用兼容的浏览器(查看MDN以获取最新兼容性信息)。

使用Web语音API的简单示例:

此代码实例化

,添加了
const SpeechRecognition = webkitSpeechRecognition;
const speech = new SpeechRecognition();
speech.onresult = (event) => {
   console.log(event);
};
speech.start();
登录后复制
登录后复制
的事件侦听器来处理语音转录并开始侦听。 浏览器将要求麦克风访问。 语音后,

提供了抄录的文本。 SpeechRecognitiononresultonresult事件提供了包含

数组的对象。 此数组的第一个元素包含抄录的文本。

> onresult此基本代码可以在Chrome DevTools或JavaScript文件中运行。 让我们将其集成到一个React应用程序中。SpeechRecognitionEvent> results

在React中使用Web语音:Adding Voice Search to a React Application >

创建一个新的React项目:

>将默认

替换为以下内容,其中包含Web语音API:

此增强的组件管理听力状态(
npx create-react-app book-voice-search
cd book-voice-search
npm start
登录后复制
登录后复制
),存储抄录的文本(

),并处理麦克风单击事件(App.js)。

挂钩设置
// App.js
import React, { useState, useEffect } from "react";
import "./index.css";
import Mic from "./microphone-black-shape.svg"; // Import your microphone image

let speech;
if (window.webkitSpeechRecognition) {
  const SpeechRecognition = webkitSpeechRecognition;
  speech = new SpeechRecognition();
  speech.continuous = true; // Enable continuous listening
} else {
  speech = null;
}

const App = () => {
  const [isListening, setIsListening] = useState(false);
  const [text, setText] = useState("");

  const listen = () => {
    setIsListening(!isListening);
    if (isListening) {
      speech.stop();
    } else {
      speech.start();
    }
  };

  useEffect(() => {
    if (!speech) return;
    speech.onresult = (event) => {
      setText(event.results[event.results.length - 1][0].transcript);
    };
  }, []);

  // ... (rest of the component remains the same)
};

export default App;
登录后复制
登录后复制
侦听器。

> isListeningtext>可重复使用的自定义反应语音钩:listenuseEffect>

提高代码可重复性,创建一个自定义钩useVoice.js

const SpeechRecognition = webkitSpeechRecognition;
const speech = new SpeechRecognition();
speech.onresult = (event) => {
   console.log(event);
};
speech.start();
登录后复制
登录后复制
这个钩子封装了语音识别逻辑。 现在,更新

用于使用此钩子:App.js

npx create-react-app book-voice-search
cd book-voice-search
npm start
登录后复制
登录后复制
这简化了

并促进代码重复使用。App.js>

书籍语音搜索功能:>

创建另一个自定义挂钩

来处理书籍搜索:useBookFetch.js>

// App.js
import React, { useState, useEffect } from "react";
import "./index.css";
import Mic from "./microphone-black-shape.svg"; // Import your microphone image

let speech;
if (window.webkitSpeechRecognition) {
  const SpeechRecognition = webkitSpeechRecognition;
  speech = new SpeechRecognition();
  speech.continuous = true; // Enable continuous listening
} else {
  speech = null;
}

const App = () => {
  const [isListening, setIsListening] = useState(false);
  const [text, setText] = useState("");

  const listen = () => {
    setIsListening(!isListening);
    if (isListening) {
      speech.stop();
    } else {
      speech.start();
    }
  };

  useEffect(() => {
    if (!speech) return;
    speech.onresult = (event) => {
      setText(event.results[event.results.length - 1][0].transcript);
    };
  }, []);

  // ... (rest of the component remains the same)
};

export default App;
登录后复制
登录后复制
>此钩子根据作者的名字从开放库中获取书籍数据。 最后,将其集成到

中以显示搜索结果:App.js

// useVoice.js
import { useState, useEffect } from 'react';

// ... (SpeechRecognition setup remains the same)

const useVoice = () => {
  // ... (state and listen function remain the same)

  useEffect(() => {
    // ... (onresult event listener remains the same)
  }, []);

  return { text, isListening, listen, voiceSupported: speech !== null };
};

export { useVoice };
登录后复制
这完成了语音控制的图书搜索应用程序。

演示:

[插入codesandbox或类似的演示链接]

>

结论:

这个示例展示了Web语音API的功能和简单性,用于在React应用程序中添加语音交互。 请记住浏览器的兼容性和潜在的准确性限制。 完整的代码可在GitHub上找到。>

>

常见问题(移动到末端以获得更好的流程):

(这些将以原始格式以结论遵循原始输入的FAQ部分,可以包括在这里,稍微改写,以获得更好的清晰度和流程在这篇修订的文章中。

以上是将语音搜索添加到React应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1655
14
CakePHP 教程
1414
52
Laravel 教程
1307
25
PHP教程
1254
29
C# 教程
1228
24
神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的演变:当前的趋势和未来前景 JavaScript的演变:当前的趋势和未来前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript引擎:比较实施 JavaScript引擎:比较实施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript:探索网络语言的多功能性 JavaScript:探索网络语言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

如何使用Next.js(前端集成)构建多租户SaaS应用程序 如何使用Next.js(前端集成)构建多租户SaaS应用程序 Apr 11, 2025 am 08:22 AM

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

如何安装JavaScript? 如何安装JavaScript? Apr 05, 2025 am 12:16 AM

JavaScript不需要安装,因为它已内置于现代浏览器中。你只需文本编辑器和浏览器即可开始使用。1)在浏览器环境中,通过标签嵌入HTML文件中运行。2)在Node.js环境中,下载并安装Node.js后,通过命令行运行JavaScript文件。

从C/C到JavaScript:所有工作方式 从C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

See all articles