VAIS Speech
For easy integration with VAIS Speech service.
Features
- Streaming recognition (up to 1 minutes)
- Offline record audio and recognition (up to 1 hour)
Installation
Add this to your package's pubspec.yaml file
dependencies:
vais_speech: [Current version]
How to use?
VAIS Speech has 2 parts :
- Record Audio ( Offline and Streaming Support )
- Uploaded audio following status
- Get text by speech
Before started
Android :
Set up permission related to record in AndroidManifest.xml, as below
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
add a service in app
<service android:name="tsyliveaudiorecord.live_audio_record.AudioRecordService"/>
iOS :
The same with iOS in Info.plist
<key>NSAppleMusicUsageDescription</key>
<string>App need to use music because of retrieving your need uploading file.</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>fetch</string>
</array>
Flutter side :
Initialize VAIS instance to use :
final vaisSpeech = VaisSpeech(<YOUR_TOKEN>)
Record Audio:
VAIS Speech have 2 modes to use and you need to decide which mode should be use :
- Offline mode (default)
- Streaming mode
- Get VAIS Speech Audio and initialize it before recording
final vaisSpeechAudio = vaisSpeech.vaisSpeechAudio; // Get VAIS Speech Audio
await vaisSpeechAudio.init(...) // then initilize it
More about .init()
function :
Function | Properties |
---|---|
Future init(String path, {AudioFormat audioFormat, int sampleRate = 16000, RecordMode recordMode = RecordMode.Offline}) | path : Your recording path - recordMode : Your recording mode |
- Add Listener to observer your recording. E.g: duration, settings, streaming text (if your are in streaming mode) ...) This method should be call before starting.
vaisSpeechAudio.addListener(listener);
Function | Properties |
---|---|
addListener(VaisSpeechCallback listener) | see more VaisSpeechCallback |
VaisSpeechCallback | This callback includes 3 methods : onGeneratedSpeechText / onDurationChanged / onConnectionChanged |
onGeneratedSpeechText
: Fired when there's some texts are translated (Streaming mode only)onConnectionChanged
: Fired when the connection with our services is closed (Streaming mode only)onDurationChanged
: duration of your recording (for show duration for e.g).
- Start Recording :
Simply call
.start
to start recording
await vaisSpeechAudio.start();
- Pause Recording (Offline mode Only) :
You will get an
Exception
when call it in Streaming Mode
await vaisSpeechAudio.pause();
- Resume Recording (Offline mode Only) :
You will get an
Exception
when call it in Streaming Mode
await vaisSpeechAudio.resume();
- Stop Recording :
await vaisSpeechAudio.stop();
Upload Recorded Audio:
After recording, call .startAsr()
to upload your local Audio. This function will return a AudioId
await vaisSpeechAudio.startAsr(...);
Function | Properties |
---|---|
Future | path : your located audio file - finalName (optional) your custom audio name |
Following status of the Recorded Audio:
var audioStatus = await vaisSpeechAudio.getProgress(...);
Function | Properties |
---|---|
Future | audio : your audio id after uploading. This will be return a AudioStatus model |
AudioStatus | Includes: CREATED, QUEUED, PROCESSING, DONE, ERROR |
Get transcript of the Recorded Audio:
final transcript = await vaisSpeechAudio.getTranscript()..data;
Function | Properties |
---|---|
Future | audio : your audio id after uploading. This will be return a TranscriptResponse model, you should .data to get a transcript list |
Libraries
- controller/offline_controller
- controller/streaming_controller
- model/audio/audio
- model/audio/audio_response
- model/audio/created_audio_response
- model/base_response
- model/lyric/lyric
- model/lyric/lyric_response
- model/page_response
- model/s3/signature
- model/s3/signature_response
- model/status
- proto/generated/cloud_speech.pb
- proto/generated/cloud_speech.pbenum
- proto/generated/cloud_speech.pbgrpc
- proto/generated/cloud_speech.pbjson
- repository/network
- vais
- vais_helper
- vais_speech
- vais_speech_audio