Heim >Web-Frontend >js-Tutorial >Hinzufügen von Sprachsuche zu einer React -Anwendung
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:
useVoice
), um die Spracherkennungslogik zu verkapulieren und wiederzuverwenden. 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.
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!