From e3d384158f5319e13b6d653693f62be2ce46284b Mon Sep 17 00:00:00 2001 From: James Nuanez Date: Sat, 30 Jan 2021 14:49:57 -0800 Subject: [PATCH] Implement AWS Speech Recognition --- src/components/forms/ApplicationForm.js | 31 +++++++++++++++++++++---- src/data/SpeechRecognizerLanguageAws.js | 10 ++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/data/SpeechRecognizerLanguageAws.js diff --git a/src/components/forms/ApplicationForm.js b/src/components/forms/ApplicationForm.js index c3fec3f..11a1ca1 100644 --- a/src/components/forms/ApplicationForm.js +++ b/src/components/forms/ApplicationForm.js @@ -13,6 +13,7 @@ import Button from '../elements/Button'; import SpeechSynthesisLanguageGoogle from '../../data/SpeechSynthesisLanguageGoogle'; import SpeechSynthesisLanguageAws from '../../data/SpeechSynthesisLanguageAws'; import SpeechRecognizerLanguageGoogle from '../../data/SpeechRecognizerLanguageGoogle'; +import SpeechRecognizerLanguageAws from '../../data/SpeechRecognizerLanguageAws'; import Loader from '../blocks/Loader'; import CopyableText from '../elements/CopyableText'; @@ -840,9 +841,25 @@ const ApplicationForm = props => { name="speechRecognizerVendor" id="speechRecognizerVendor" value={speechRecognizerVendor} - onChange={e => setSpeechRecognizerVendor(e.target.value)} + onChange={e => { + setSpeechRecognizerVendor(e.target.value); + + // Google and AWS have different language lists. If the newly chosen + // vendor doesn't have the same language that was already in use, + // select US English + if (( + e.target.value === 'google' && + !SpeechRecognizerLanguageGoogle.some(l => l.code === speechRecognizerLanguage) + ) || ( + e.target.value === 'aws' && + !SpeechRecognizerLanguageAws.some(l => l.code === speechRecognizerLanguage) + )) { + setSpeechRecognizerLanguage('en-US'); + } + }} > + diff --git a/src/data/SpeechRecognizerLanguageAws.js b/src/data/SpeechRecognizerLanguageAws.js new file mode 100644 index 0000000..a1f4ac8 --- /dev/null +++ b/src/data/SpeechRecognizerLanguageAws.js @@ -0,0 +1,10 @@ +export default [ + { name: 'Australian English', 'code': 'en-AU' }, + { name: 'British English', 'code': 'en-GB' }, + { name: 'US English', 'code': 'en-US' }, + { name: 'French', 'code': 'fr-FR' }, + { name: 'Canadian French', 'code': 'fr-CA' }, + { name: 'German', 'code': 'de-DE' }, + { name: 'Italian', 'code': 'it-IT' }, + { name: 'US Spanish', 'code': 'es-US' }, +];