flutter_realtime_voice_ai 0.2.0
flutter_realtime_voice_ai: ^0.2.0 copied to clipboard
A Flutter package for streaming voice recording, and audio playback with focus on real-time voice interactions.
Flutter Realtime Voice AI #
A Flutter package for streaming voice recording, WebSocket connectivity, and audio playback with focus on real-time voice interactions.
Features #
- π€ Stream Recording: Record audio from device microphones with permission handling
- π Streaming Playback: Play incoming audio chunks with buffering support
- π State Management: State tracking for recorder and player
- β‘ Real-time Processing: Optimized for low-latency voice interactions
- π Logging: logging for debugging and monitoring
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
flutter_realtime_voice_ai: ^0.1.0
Then run:
flutter pub get
Custom Configuration #
final config = StreamConfig(
sampleRate: 16000,
channels: 1,
encoder: AudioEncoder.pcm16bits,
enableNoiseSuppression: true,
enableEchoCancellation: true,
);
final voiceService = VoiceStreamingService(config: config);
Handling Audio Chunks #
// Listen to incoming audio chunks
voiceService.onAudioChunkReceived = (chunk) {
print('Received audio chunk: ${chunk.size} bytes');
};
// Send custom audio data
await voiceService.sendAudioChunk(Uint8List.fromList(audioData));
State Management #
// Monitor all states
voiceService.recorderStateStream.listen((state) {
switch (state) {
case VoiceRecorderState.recording:
// Handle recording state
break;
case VoiceRecorderState.stopped:
// Handle stopped state
break;
case VoiceRecorderState.error:
// Handle error state
break;
}
});
voiceService.connectionStateStream.listen((state) {
switch (state) {
case ConnectionState.connected:
// Connection established
break;
case ConnectionState.disconnected:
// Connection lost
break;
case ConnectionState.error:
// Connection error
break;
}
});
API Reference #
VoiceStreamingService #
The main service that coordinates all voice operations.
Constructor
VoiceStreamingService({
StreamConfig? config,
Logger? logger,
})
Methods
Future<void> initialize({required String websocketUrl, required String jwtToken, StreamConfig? config})- Initialize the serviceFuture<void> startStreaming()- Start recording and streamingFuture<void> stopStreaming()- Stop recording and streamingFuture<bool> checkPermissions()- Check microphone permissions
Streams
Stream<VoiceRecorderState> recorderStateStream- Recorder state changesStream<VoicePlayerState> playerStateStream- Player state changes
Enums #
VoiceRecorderState
idle- Not recordingrecording- Currently recordingpaused- Recording pausederror- Recording error
VoicePlayerState
idle- Not playingbuffering- Buffering audioplaying- Currently playingpaused- Playback pausedstopped- Playback stoppederror- Playback error
ConnectionState
disconnected- Not connectedstreaming- Actively streamingerror- Connection error
Permissions #
Add these permissions to your platform-specific files:
Android (android/app/src/main/AndroidManifest.xml) #
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Platform Support #
- β Android
- β iOS
Dependencies #
This package depends on:
flutter_soundfor audio playbackrecordfor audio recordingloggerfor logging
Example #
See the example/ directory for a complete Flutter app demonstrating all package features.