Syncfusion React Speech To Text

syncfusion/react-ui-components-skills/skills/syncfusion-react-speech-to-text

作者 syncfusion6fb1c883a8412b611b95f839e0cb06e1fc8170a8無授權條款收錄於 2026年10月9日更新於 2026年10月9日

Implement the Syncfusion React SpeechToText component. Use this skill to convert speech to text, manage microphone input, control listening states, process speech events, customize UI, support accessible voice-enabled forms, and handle globalization and security in React applications.

AI 產生的概覽

指導在 React 應用程式中實作 Syncfusion React SpeechToText 元件,以進行瀏覽器語音辨識。

功能
此技能提供實作 Syncfusion React SpeechToText 元件的參考文件,該元件使用 Web Speech API 將麥克風語音轉換為文字。內容涵蓋安裝、屬性、事件、方法、按鈕與工具提示自訂、在地化、無障礙支援以及疑難排解。它產出的是建構語音互動 React 介面的指引與程式碼範例,而非可執行的成品。
適用情境
適用於在使用 Syncfusion 元件的 React 應用程式中加入語音轉文字輸入的情境。適合處理轉錄事件、以程式化方式控制聆聽狀態、自訂麥克風按鈕,或處理麥克風權限與錯誤等任務。
執行需求
需要一個 React 專案,並安裝 Syncfusion 的 @syncfusion/ej2-react-inputs 套件及其佈景主題 CSS,同時需註冊 Syncfusion 授權金鑰。語音辨識依賴瀏覽器對 Web Speech API 的支援以及麥克風權限。此技能不含指令碼,僅為說明文件與參考資料。

Syncfusion React SpeechToText Component

Component Overview

The SpeechToText component enables users to convert spoken words into text using the Web Speech API. This skill helps you implement, customize, and troubleshoot speech recognition in React applications. The main component that captures audio from the user's microphone and converts speech to text in real-time using browser APIs.

Key Capabilities

  • Real-time speech recognition
  • Multiple language support
  • Customizable button and tooltip
  • Event-driven architecture
  • Programmatic control via methods
  • Accessibility support (ARIA labels, keyboard navigation)
  • Localization support
  • Error handling and recovery

Documentation

Getting Started

📄 Read: references/getting-started.md [blocked]

  • Installation via npm
  • Package installation and setup
  • Basic component implementation
  • CSS imports and theme selection
  • First working example
  • TypeScript configuration
  • Disabling the component (disabled property)

Speech Recognition Features

📄 Read: references/speech-recognition-features.md [blocked]

  • Retrieving transcripts in real-time
  • Setting language for recognition
  • Managing interim results
  • Listening state management with SpeechToTextState enum (Inactive, Listening, Stopped)
  • Reading listeningState from event args and component ref
  • Handling speech-to-text conversion
  • Real-time vs final results

Button and Tooltip Customization

📄 Read: references/button-and-tooltip-customization.md [blocked]

  • Customizing button content and icons
  • Icon positioning and styling
  • Controlling tooltip visibility (showTooltip property)
  • Tooltip configuration and placement (all 12 TooltipPosition values)
  • CSS class styling (e-primary, e-success, etc.)
  • Button appearance modes
  • Responsive button design

Events and Methods

📄 Read: references/events-and-methods.md [blocked]

  • Event handling (created, onStart, onStop, onError, transcriptChanged)
  • Correct event argument interfaces (StartListeningEventArgs, StopListeningEventArgs, ErrorEventArgs, TranscriptChangedEventArgs)
  • cancel property to prevent listening start
  • isInteracted to distinguish user vs programmatic triggers
  • errorMessage for human-readable error details
  • isInterimResult for interim vs final transcript results
  • startListening(), stopListening(), and destroy() methods
  • Ref-based component control
  • Programmatic listening management

Globalization and Localization

📄 Read: references/globalization-and-localization.md [blocked]

  • Localization with L10n.load()
  • Available locale strings and translations
  • Language-specific error messages
  • RTL support for right-to-left languages
  • Accessibility labels and ARIA attributes
  • htmlAttributes for custom HTML/ARIA attributes on the button element
  • Multi-language interface support

Troubleshooting and Security

📄 Read: references/troubleshooting-and-security.md [blocked]

  • Common issues and solutions
  • Browser compatibility matrix
  • Microphone permission handling
  • Security considerations and best practices
  • Privacy and data transmission
  • Performance optimization
  • Offline fallback strategies

Quick Start Example

tsx
import { SpeechToTextComponent, TextAreaComponent, TranscriptChangedEventArgs } from '@syncfusion/ej2-react-inputs';import { useState } from 'react';import "@syncfusion/ej2-tailwind3-theme/styles/speech-to-text/index.css";
function VoiceNoteApp() {  const [transcript, setTranscript] = useState('');
  const handleTranscriptChanged = (args: TranscriptChangedEventArgs) => {    setTranscript(args.transcript);  };
  return (    <div style={{ padding: '20px' }}>      <h2>Voice Note Recorder</h2>            {/* SpeechToText component with microphone button */}      <SpeechToTextComponent         id="speechToText"        transcriptChanged={handleTranscriptChanged}      />            {/* Display transcribed text */}      <TextAreaComponent        id="noteArea"        value={transcript}        resizeMode="None"        rows={5}        cols={50}        placeholder="Your voice will appear here..."      />    </div>  );}
export default VoiceNoteApp;

Common Patterns

Pattern 1: Voice Form Input

tsx
import { SpeechToTextComponent, TextBoxComponent } from '@syncfusion/ej2-react-inputs';import { useState } from 'react';
function VoiceForm() {  const [formData, setFormData] = useState({    name: '',    message: ''  });
  const handleNameTranscript = (args: any) => {    setFormData(prev => ({ ...prev, name: args.transcript }));  };
  const handleMessageTranscript = (args: any) => {    setFormData(prev => ({ ...prev, message: args.transcript }));  };
  return (    <div>      <label>Name (speak):</label>      <SpeechToTextComponent transcriptChanged={handleNameTranscript} />      <TextBoxComponent value={formData.name} />            <label>Message (speak):</label>      <SpeechToTextComponent transcriptChanged={handleMessageTranscript} />      <TextBoxComponent value={formData.message} />    </div>  );}

Pattern 2: Programmatic Control

tsx
import { SpeechToTextComponent } from '@syncfusion/ej2-react-inputs';import { useRef } from 'react';
function VoiceControlApp() {  const speechRef = useRef<SpeechToTextComponent>(null);
  const startVoiceInput = () => {    speechRef.current?.startListening();  };
  const stopVoiceInput = () => {    speechRef.current?.stopListening();  };
  return (    <div>      <SpeechToTextComponent ref={speechRef} />      <button onClick={startVoiceInput}>Start Recording</button>      <button onClick={stopVoiceInput}>Stop Recording</button>    </div>  );}

Pattern 3: Error Handling

tsx
import { SpeechToTextComponent, ErrorEventArgs } from '@syncfusion/ej2-react-inputs';import { useState } from 'react';
function VoiceWithErrorHandling() {  const [error, setError] = useState('');  const [isListening, setIsListening] = useState(false);
  const handleError = (args: ErrorEventArgs) => {    // args.errorMessage is the human-readable description; args.error is the error code    setError(args.errorMessage || `Error: ${args.error}`);  };
  const handleStart = () => {    setIsListening(true);    setError('');  };
  const handleStop = () => {    setIsListening(false);  };
  return (    <div>      <SpeechToTextComponent         onError={handleError}        onStart={handleStart}        onStop={handleStop}      />      {isListening && <p>🎤 Listening...</p>}      {error && <p style={{ color: 'red' }}>{error}</p>}    </div>  );}

Key Props

PropTypeDescription
langstringLanguage for speech recognition (e.g., 'en-US', 'fr-FR')
transcriptstringCurrent transcribed text
allowInterimResultsbooleanShow real-time results (default: true)
listeningStateSpeechToTextStateCurrent listening state (Inactive, Listening, Stopped)
buttonSettingsButtonSettingsModelCustomize button appearance and content
tooltipSettingsTooltipSettingsModelConfigure tooltip display
showTooltipbooleanWhether to display the tooltip on hover (default: true)
cssClassstringApply CSS classes for styling
disabledbooleanDisable all component interaction (default: false)
htmlAttributes{ [key: string]: string }Additional HTML attributes (ARIA, data-*, etc.) for the root button element
localestringLocalization language code
enableRtlbooleanEnable right-to-left layout
enablePersistencebooleanPersist component state between page reloads via localStorage

Event Handlers

EventArgsDescription
created-Fired when component is initialized
onStartStartListeningEventArgsFired when speech recognition begins. Args: cancel, event, isInteracted, listeningState, name
onStopStopListeningEventArgsFired when speech recognition ends. Args: event, isInteracted, listeningState, name
onErrorErrorEventArgsFired when an error occurs. Args: error, errorMessage, event, name
transcriptChangedTranscriptChangedEventArgsFired when transcription updates. Args: transcript, isInterimResult, event, name

Methods

MethodDescription
startListening()Begin speech recognition programmatically
stopListening()Stop speech recognition programmatically
destroy()Destroy the component instance and release all resources

Troubleshooting

Microphone permission denied

Solution: Check browser permissions settings and allow microphone access in security settings

Speech not recognized

Solution: Check microphone volume, speak clearly, verify correct language setting

Component not rendering

Solution: Ensure CSS imports are included and license key is registered

Browser not supported

Solution: Check if browser supports Web Speech API (Chrome, Edge, Safari support it)

Related Components

  • TextArea: For displaying transcribed text
  • TextBox: For input fields with voice capabilities
  • Button: For custom voice control buttons
  • Tooltip: For contextual help on voice features

來源與署名

來源:syncfusion/react-ui-components-skills位於skills/syncfusion-react-speech-to-text提交6fb1c88

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架