mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
💬 feat: Improve speech recognition UX for unsupported browsers
Show helpful error message when browser doesn't support speech recognition, suggesting external STT option only when it's configured on the server.
This commit is contained in:
parent
3213f574c6
commit
b879a52bc4
2 changed files with 12 additions and 2 deletions
|
|
@ -2,16 +2,21 @@ import { useEffect, useRef, useMemo } from 'react';
|
|||
import { useRecoilState } from 'recoil';
|
||||
import { useToastContext } from '@librechat/client';
|
||||
import SpeechRecognition, { useSpeechRecognition } from 'react-speech-recognition';
|
||||
import { useGetCustomConfigSpeechQuery } from 'librechat-data-provider/react-query';
|
||||
import useGetAudioSettings from './useGetAudioSettings';
|
||||
import { useLocalize } from '~/hooks';
|
||||
import store from '~/store';
|
||||
|
||||
const useSpeechToTextBrowser = (
|
||||
setText: (text: string) => void,
|
||||
onTranscriptionComplete: (text: string) => void,
|
||||
) => {
|
||||
const localize = useLocalize();
|
||||
const { showToast } = useToastContext();
|
||||
const { speechToTextEndpoint } = useGetAudioSettings();
|
||||
const isBrowserSTTEnabled = speechToTextEndpoint === 'browser';
|
||||
const { data: speechConfig } = useGetCustomConfigSpeechQuery({ enabled: true });
|
||||
const sttExternal = Boolean(speechConfig?.sttExternal);
|
||||
|
||||
const lastTranscript = useRef<string | null>(null);
|
||||
const lastInterim = useRef<string | null>(null);
|
||||
|
|
@ -71,7 +76,9 @@ const useSpeechToTextBrowser = (
|
|||
const toggleListening = () => {
|
||||
if (!browserSupportsSpeechRecognition) {
|
||||
showToast({
|
||||
message: 'Browser does not support SpeechRecognition',
|
||||
message: sttExternal
|
||||
? localize('com_ui_speech_not_supported_use_external')
|
||||
: localize('com_ui_speech_not_supported'),
|
||||
status: 'error',
|
||||
});
|
||||
return;
|
||||
|
|
@ -79,7 +86,7 @@ const useSpeechToTextBrowser = (
|
|||
|
||||
if (!isMicrophoneAvailable) {
|
||||
showToast({
|
||||
message: 'Microphone is not available',
|
||||
message: localize('com_ui_microphone_unavailable'),
|
||||
status: 'error',
|
||||
});
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1295,6 +1295,9 @@
|
|||
"com_ui_special_variables": "Special variables:",
|
||||
"com_ui_special_variables_more_info": "You can select special variables from the dropdown: `{{current_date}}` (today's date and day of week), `{{current_datetime}}` (local date and time), `{{utc_iso_datetime}}` (UTC ISO datetime), and `{{current_user}}` (your account name).",
|
||||
"com_ui_speech_while_submitting": "Can't submit speech while a response is being generated",
|
||||
"com_ui_speech_not_supported": "Your browser does not support speech recognition",
|
||||
"com_ui_speech_not_supported_use_external": "Your browser does not support speech recognition. Try switching to External STT in Settings > Speech.",
|
||||
"com_ui_microphone_unavailable": "Microphone is not available",
|
||||
"com_ui_sr_actions_menu": "Open actions menu for \"{{0}}\" prompt",
|
||||
"com_ui_sr_global_prompt": "Global prompt group",
|
||||
"com_ui_stack_trace": "Stack Trace",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue