Update TextChat.jsx

This commit is contained in:
bsu3338 2023-08-05 09:26:25 -05:00 committed by GitHub
parent 2ffb5bedd3
commit 49a9daea34
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,6 +5,7 @@ import SubmitButton from './SubmitButton';
import OptionsBar from './OptionsBar'; import OptionsBar from './OptionsBar';
import { EndpointMenu } from './EndpointMenu'; import { EndpointMenu } from './EndpointMenu';
import Footer from './Footer'; import Footer from './Footer';
import useSpeechRecognition from './SpeechRecognition';
import { useMessageHandler, ThemeContext } from '~/hooks'; import { useMessageHandler, ThemeContext } from '~/hooks';
import { cn } from '~/utils'; import { cn } from '~/utils';
import store from '~/store'; import store from '~/store';
@ -29,69 +30,6 @@ export default function TextChat({ isSearchView = false }) {
const isNotAppendable = latestMessage?.unfinished & !isSubmitting || latestMessage?.error; const isNotAppendable = latestMessage?.unfinished & !isSubmitting || latestMessage?.error;
const { conversationId, jailbreak } = conversation || {}; const { conversationId, jailbreak } = conversation || {};
const [isSpeechSupported, setIsSpeechSupported] = useState(false);
const [isListening, setIsListening] = useState(false);
useEffect(() => {
if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) {
setIsSpeechSupported(true);
} else {
console.log("Browser does not support SpeechRecognition");
setIsSpeechSupported(false);
return;
}
if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {
console.log("Browser does not support SpeechRecognition");
return;
}
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.onstart = () => {
console.log("Speech recognition started");
};
recognition.interimResults = true;
recognition.onresult = (event) => {
let transcript = '';
for (let i = 0; i < event.results.length; i++) {
const result = event.results[i];
transcript += result[0].transcript;
if (result.isFinal) {
setText(transcript);
ask({ text: transcript });
}
}
// Set the text with both interim and final results
setText(transcript);
};
recognition.onend = () => {
setIsListening(false);
setText('');
};
if (isListening) {
recognition.start();
} else {
recognition.stop();
}
return () => {
recognition.stop();
};
}, [isListening]);
const toggleListening = (e) => {
e.preventDefault();
setIsListening((prevState) => !prevState);
};
// auto focus to input, when enter a conversation. // auto focus to input, when enter a conversation.
useEffect(() => { useEffect(() => {