flutter_realtime_voice_ai 0.1.0
flutter_realtime_voice_ai: ^0.1.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_sound
for audio playbackrecord
for audio recordinglogger
for logging
Example #
See the example/
directory for a complete Flutter app demonstrating all package features.