From f3fad7231d34f5c8c8275e03f66c17050f35e390 Mon Sep 17 00:00:00 2001 From: Mahdhi Rezvi <37553533+Mahdhir@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:53:57 +0530 Subject: [PATCH 1/2] Add transcript mutation --- src/SpeechRecognition.js | 14 ++++++++++++-- src/actions.js | 11 ++++++++++- src/constants.js | 1 + src/reducers.js | 7 ++++++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/SpeechRecognition.js b/src/SpeechRecognition.js index c36db13..9c586de 100644 --- a/src/SpeechRecognition.js +++ b/src/SpeechRecognition.js @@ -5,7 +5,7 @@ import { compareTwoStringsUsingDiceCoefficient, browserSupportsPolyfills } from './utils' -import { clearTranscript, appendTranscript } from './actions' +import { clearTranscript, appendTranscript, mutateTranscript } from './actions' import { transcriptReducer } from './reducers' import RecognitionManager from './RecognitionManager' import isAndroid from './isAndroid' @@ -39,11 +39,20 @@ const useSpeechRecognition = ({ dispatch(clearTranscript()) } + const dispatchMutateTranscript = (mutatedTranscript) => { + dispatch(mutateTranscript(mutatedTranscript)) + } + const resetTranscript = useCallback(() => { recognitionManager.resetTranscript() dispatchClearTranscript() }, [recognitionManager]) + const editTranscript = useCallback((mutatedTranscript) => { + recognitionManager.resetTranscript() + dispatchMutateTranscript(mutatedTranscript) + }, [recognitionManager]) + const testFuzzyMatch = (command, input, fuzzyMatchingThreshold) => { const commandToString = (typeof command === 'object') ? command.toString() : command const commandWithoutSpecials = commandToString @@ -163,7 +172,8 @@ const useSpeechRecognition = ({ isMicrophoneAvailable, resetTranscript, browserSupportsSpeechRecognition, - browserSupportsContinuousListening + browserSupportsContinuousListening, + editTranscript } } const SpeechRecognition = { diff --git a/src/actions.js b/src/actions.js index 1a9013e..b512cc2 100644 --- a/src/actions.js +++ b/src/actions.js @@ -1,4 +1,4 @@ -import { CLEAR_TRANSCRIPT, APPEND_TRANSCRIPT } from './constants' +import { CLEAR_TRANSCRIPT, APPEND_TRANSCRIPT, MUTATE_TRANSCRIPT } from './constants' export const clearTranscript = () => { return { type: CLEAR_TRANSCRIPT } @@ -13,3 +13,12 @@ export const appendTranscript = (interimTranscript, finalTranscript) => { } } } + +export const mutateTranscript = (mutatedTranscript) => { + return { + type: MUTATE_TRANSCRIPT, + payload: { + mutatedTranscript + } + } +} diff --git a/src/constants.js b/src/constants.js index 2a3aa46..1f63816 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,2 +1,3 @@ export const CLEAR_TRANSCRIPT = 'CLEAR_TRANSCRIPT' export const APPEND_TRANSCRIPT = 'APPEND_TRANSCRIPT' +export const MUTATE_TRANSCRIPT = 'MUTATE_TRANSCRIPT' diff --git a/src/reducers.js b/src/reducers.js index 09fffd9..5b8587d 100644 --- a/src/reducers.js +++ b/src/reducers.js @@ -1,4 +1,4 @@ -import { CLEAR_TRANSCRIPT, APPEND_TRANSCRIPT } from './constants' +import { CLEAR_TRANSCRIPT, APPEND_TRANSCRIPT, MUTATE_TRANSCRIPT } from './constants' import { concatTranscripts } from './utils' const transcriptReducer = (state, action) => { @@ -13,6 +13,11 @@ const transcriptReducer = (state, action) => { interimTranscript: action.payload.interimTranscript, finalTranscript: concatTranscripts(state.finalTranscript, action.payload.finalTranscript) } + case MUTATE_TRANSCRIPT: + return { + interimTranscript: '', + finalTranscript: action.payload.mutatedTranscript + } default: throw new Error() } From f1ce2d1e31c2ebff6e69b96fc93ef0ae095d4836 Mon Sep 17 00:00:00 2001 From: Mahdhi Rezvi <37553533+Mahdhir@users.noreply.github.com> Date: Wed, 21 May 2025 16:50:10 +0530 Subject: [PATCH 2/2] Update merge conflict imports --- src/SpeechRecognition.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/SpeechRecognition.js b/src/SpeechRecognition.js index d0dfe67..5e2a372 100644 --- a/src/SpeechRecognition.js +++ b/src/SpeechRecognition.js @@ -1,20 +1,14 @@ import { useCallback, useEffect, useReducer, useRef, useState } from "react"; -import NativeSpeechRecognition from "./NativeSpeechRecognition"; -import RecognitionManager from "./RecognitionManager"; -import { appendTranscript, clearTranscript } from "./actions"; import isAndroid from "./isAndroid"; import { transcriptReducer } from "./reducers"; import { browserSupportsPolyfills, commandToRegExp, compareTwoStringsUsingDiceCoefficient, - browserSupportsPolyfills, concatTranscripts, } from "./utils"; import { clearTranscript, appendTranscript, mutateTranscript } from "./actions"; -import { transcriptReducer } from "./reducers"; import RecognitionManager from "./RecognitionManager"; -import isAndroid from "./isAndroid"; import NativeSpeechRecognition from "./NativeSpeechRecognition"; let _browserSupportsSpeechRecognition = !!NativeSpeechRecognition;