Speech recognition, or speech-to-text, is the ability of a machine or program to identify words spoken aloud and convert them into readable text.
Speech recognition uses a broad array of research in computer science, linguistics, and computer engineering. Many modern devices and text-focused programs have speech recognition functions in them to allow for easier or hands-free use of a device.
In this article, we will discuss the Flutter plugin to use speech recognition on iOS + & Android 4.1+ , from install, usage, and permissions. Now, check it out and let’s begin.
Firstly, The install step:
- Depend on it
Add this to your package’s pubspec.yaml file:
dependencies: speech_recognition: "^0.2.0+1"
- Install it
You can install packages from the command line:
$ flutter packages get
Alternatively, your editor might support ‘packages get’. Check the docs for your editor to learn more.
- Import it
Now in your Dart code, you can use:
Next, the Usage step:
//.. _speech = new SpeechRecognition(); // The flutter app not only call methods on the host platform, // it also needs to receive method calls from host. _speech.setAvailabilityHandler((bool result) => setState(() => _speechRecognitionAvailable = result)); // handle device current locale detection _speech.setCurrentLocaleHandler((String locale) => setState(() => _currentLocale = locale)); _speech.setRecognitionStartedHandler(() => setState(() => _isListening = true)); // this handler will be called during recognition. // the iOS API sends intermediate results, // On my Android device, only the final transcription is received _speech.setRecognitionResultHandler((String text) => setState(() => transcription = text)); _speech.setRecognitionCompleteHandler(() => setState(() => _isListening = false)); // 1st launch : speech recognition permission / initialization _speech .activate() .then((res) => setState(() => _speechRecognitionAvailable = res)); //.. speech.listen(locale:_currentLocale).then((result)=> print('result : $result')); // ... speech.cancel(); // || speech.stop();
infos.plist, add :
- Privacy – Microphone Usage Description
- Privacy – Speech Recognition Usage Description
<key>NSMicrophoneUsageDescription</key> <string>This application needs to access your microphone</string> <key>NSSpeechRecognitionUsageDescription</key> <string>This application needs the speech recognition permission</string>
:warning: Swift project
This plugin is written in swift, so to use with in a Flutter/ObjC project,
you need to convert the project to “Current swift syntax” ( Edit/Convert/current swift syntax)
<uses-permission android:name="android.permission.RECORD_AUDIO" />
On iOS, by default the plugin is configured for French, English, Russian, Spanish.
On Android, without additional installations, it will probably works only with the default device locale.