Skip to content

Instantly share code, notes, and snippets.

@lmcarreiro
Last active July 29, 2021 20:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lmcarreiro/eb92dd4279f1f2eda5b54e33e63e569c to your computer and use it in GitHub Desktop.
Save lmcarreiro/eb92dd4279f1f2eda5b54e33e63e569c to your computer and use it in GitHub Desktop.
STT+VAR article - index.tsx
import React from "react";
import ReactDOM from "react-dom";
import useSpeechToText from "./utils/hooks/useSpeechToText";
ReactDOM.render(
<React.StrictMode>
<TestApp />
</React.StrictMode>,
document.getElementById("root"),
);
function TestApp() {
const [muted, setMuted] = React.useState(true);
const [messages, setMessages] = React.useState<{ text: string; isFinal: boolean }[]>([]);
const showMessage = React.useCallback((newMessage: { text: string; isFinal: boolean }) => {
setMessages(messages => {
const previousMessages = messages.slice(0, -1);
const [lastMessage] = messages.slice(-1);
return lastMessage?.isFinal
? [...previousMessages, lastMessage, newMessage]
: [...previousMessages, newMessage];
});
}, []);
useSpeechToText(true, muted, showMessage);
return (
<div>
<button onClick={() => setMuted(m => !m)}>{muted ? "Unmute" : "Mute"}</button>
<ul>
{messages.map((m, i) => (
<li key={i} style={{ color: m.isFinal ? "black" : "red" }}>
{m.text}
</li>
))}
</ul>
</div>
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment