Kod Lengkap tersedia di GitHub, dan demo kerja disediakan pada akhir.
Konsep Utama:
useVoice
Memperluaskan fungsi dengan mengintegrasikan ciri carian buku menggunakan cangkuk tersuai lain (useBookFetch
API Ucapan Web mempunyai sokongan penyemak imbas terhad. Pastikan anda menggunakan penyemak imbas yang serasi (semak MDN untuk maklumat keserasian terkini).
Contoh mudah menggunakan API Ucapan Web:
Kod ini memberi instantiates
, menambah pendengar acaraconst SpeechRecognition = webkitSpeechRecognition; const speech = new SpeechRecognition(); speech.onresult = (event) => { console.log(event); }; speech.start();
menyediakan teks yang ditranskripsikan. SpeechRecognition
onresult
Acara onresult
menyampaikan objek
. Elemen pertama array ini memegang teks yang ditranskripsikan. onresult
SpeechRecognitionEvent
Kod asas ini boleh dijalankan di Chrome Devtools atau fail JavaScript. Mari kita mengintegrasikannya ke dalam aplikasi React. results
Menggunakan ucapan web dalam React:
Buat projek React baru:
Gantikan lalaidengan yang berikut, yang menggabungkan API Ucapan Web:
npx create-react-app book-voice-search cd book-voice-search npm start
Komponen yang dipertingkatkan ini menguruskan keadaan pendengaran (App.js
), menyimpan teks transkripsi (
// 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;
. isListening
text
listen
cangkuk suara React Custom yang boleh diguna semula: useEffect
onresult
Untuk meningkatkan kebolehgunaan semula kod, buat cangkuk tersuai useVoice.js
:
const SpeechRecognition = webkitSpeechRecognition; const speech = new SpeechRecognition(); speech.onresult = (event) => { console.log(event); }; speech.start();
cangkuk ini merangkumi logik pengiktirafan suara. Sekarang, kemas kini App.js
untuk menggunakan cangkuk ini:
npx create-react-app book-voice-search cd book-voice-search npm start
Ini memudahkan App.js
dan mempromosikan penggunaan semula kod.
Fungsi Carian Suara Buku:
Buat satu lagi cangkuk tersuai useBookFetch.js
untuk mengendalikan carian buku:
// 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;
cangkuk ini mengambil data buku dari perpustakaan terbuka berdasarkan nama pengarang. Akhirnya, mengintegrasikan ini ke App.js
untuk memaparkan hasil carian:
// 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 };
Ini melengkapkan aplikasi carian buku yang dikawal suara.
Demo:
[masukkan codesandbox atau pautan demo yang serupa di sini]
Kesimpulan:
Contoh ini mempamerkan kuasa dan kesederhanaan API Ucapan Web untuk menambah interaksi suara untuk bertindak balas. Ingat keserasian penyemak imbas dan batasan ketepatan yang berpotensi. Kod penuh boleh didapati di GitHub.
Atas ialah kandungan terperinci Menambah carian suara ke aplikasi React. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!