Heim >Web-Frontend >js-Tutorial >Hinzufügen von Sprachsuche zu einer React -Anwendung

Hinzufügen von Sprachsuche zu einer React -Anwendung

Lisa Kudrow
Lisa KudrowOriginal
2025-02-09 09:30:12315Durchsuche

Adding Voice Search to a React Application

Sprachbefehle nicht nur für virtuelle Assistenten wie Google Assistant oder Alexa. Sie können mobile und Desktop -Anwendungen erheblich verbessern und sowohl Funktionen als auch eine unterhaltsame Benutzererfahrung hinzufügen. Die Integration von Sprachbefehlen oder Sprachsuche ist überraschend einfach. Dieser Artikel zeigt, dass eine sprachgesteuerte Buchsuchanwendung mithilfe der Web-Sprach-API innerhalb eines React-Frameworks erstellt wird.

Der vollständige Code ist auf GitHub verfügbar, und am Ende wird eine funktionierende Demo bereitgestellt.

Schlüsselkonzepte:

  • Nutzung der Web -Sprach -API, um die Sprachsuche in React -Anwendungen zu aktivieren und die Benutzerinteraktion zu verbessern.
  • Erstellen einer grundlegenden React -Komponente (mithilfe von React App erstellen) und dann die Web -Sprach -API zur Spracherkennung integrieren.
  • Implementierung der kontinuierlichen Spracherkennung innerhalb des Lebenszyklus des React -Komponenten, Verwaltung von Zuständen mit React -Hooks.
  • Entwickeln Sie einen benutzerdefinierten React -Hook (useVoice), um die Spracherkennungslogik zu verkapulieren und wiederzuverwenden.
  • Funktionalität erweitern, indem eine Buchsuchfunktion mit einem anderen benutzerdefinierten Hook (useBookFetch) integriert wird und mit einer externen API (offene Bibliothek) für die Datenabnahme basierend auf der Spracheingabe interagiert.

Web Speech API Einführung:

Die Web -Speech -API hat einen begrenzten Browserunterstützung. Stellen Sie sicher, dass Sie einen kompatiblen Browser verwenden (MDN auf aktuelle Kompatibilitätsinformationen überprüfen).

Ein einfaches Beispiel für die Verwendung der Web -Sprach -API:

<code class="language-javascript">const SpeechRecognition = webkitSpeechRecognition;
const speech = new SpeechRecognition();
speech.onresult = (event) => {
   console.log(event);
};
speech.start();</code>

Dieser Code instanziiert SpeechRecognition, fügt einen onresult Ereignishörer für die Sprachtranskription hinzu und startet zuzuhören. Der Browser fordert den Zugriff auf den Mikrofon an. Nach der Sprache liefert onresult den transkribierten Text.

Das Ereignis onresult liefert ein SpeechRecognitionEvent -Objekt, das ein results -Array enthält. Das erste Element dieses Arrays enthält den transkribierten Text.

Dieser grundlegende Code kann in Chrome Devtools oder einer JavaScript -Datei ausgeführt werden. Lassen Sie uns dies in eine React -Anwendung integrieren.

Adding Voice Search to a React Application

Verwenden von Web -Sprache in React:

Erstellen Sie ein neues React -Projekt:

<code class="language-bash">npx create-react-app book-voice-search
cd book-voice-search
npm start</code>

Ersetzen Sie den Standard App.js durch Folgendes, der die Web -Sprach -API enthält:

<code class="language-javascript">// 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;</code>

Diese erweiterte Komponente verwaltet das Hörzustand (isListening), speichert den transkribierten Text (text) und verarbeitet das Mikrofonklickereignis (listen). Der useEffect -Haken setzt den onresult -Hörer ein.

wiederverwendbares benutzerdefiniertes React -Voice -Hook:

Um die Wiederverwendbarkeit von Code zu verbessern, erstellen Sie einen benutzerdefinierten Hook useVoice.js:

<code class="language-javascript">const SpeechRecognition = webkitSpeechRecognition;
const speech = new SpeechRecognition();
speech.onresult = (event) => {
   console.log(event);
};
speech.start();</code>

Dieser Haken verkauft die Spracherkennungslogik. Jetzt App.js aktualisieren, um diesen Haken zu verwenden:

<code class="language-bash">npx create-react-app book-voice-search
cd book-voice-search
npm start</code>

Dies vereinfacht App.js und fördert die Code -Wiederverwendung.

Buchsuchfunktionalität der Buchstunde:

Erstellen Sie einen anderen benutzerdefinierten Hook useBookFetch.js, um die Buchsuche zu verarbeiten:

<code class="language-javascript">// 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;</code>

Dieser Hook bucht Buchdaten aus der offenen Bibliothek basierend auf dem Namen des Autors. Integrieren Sie dies schließlich in App.js, um die Suchergebnisse anzuzeigen:

<code class="language-javascript">// 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 };</code>

Dies vervollständigt die sprachgesteuerte Buchsuchanwendung.

Demo:

[CodesandBox oder einen ähnlichen Demo -Link hier einfügen]

Schlussfolgerung:

Dieses Beispiel zeigt die Leistung und Einfachheit der Web -Sprach -API für die Hinzufügung von Sprachinteraktion zu reagierenden Anwendungen. Denken Sie an die Browserkompatibilität und potenzielle Genauigkeitsbeschränkungen. Der vollständige Code ist auf Github verfügbar.

FAQs (bewegt zum besseren Fluss): (diese würden der Schlussfolgerung im ursprünglichen Format folgen) Der FAQS -Abschnitt aus dem ursprünglichen Eingang kann hier enthalten sein, leicht umformat für bessere Klarheit und Fluss Innerhalb dieses überarbeiteten Artikel.

Das obige ist der detaillierte Inhalt vonHinzufügen von Sprachsuche zu einer React -Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn