babylog_audio_plugin 0.0.1 copy "babylog_audio_plugin: ^0.0.1" to clipboard
babylog_audio_plugin: ^0.0.1 copied to clipboard

retractedunlistedoutdated

A flutter plugin for streaming audio via websockets using babylog.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
// import 'package:flutter_sound/flutter_sound.dart';
import 'package:babylog_audio_plugin/babylog_audio_plugin.dart';
import 'package:babylog_audio_plugin/protobuf/dart/audio_message.pb.dart';

import 'dart:async';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Audio Stream Plugin Demo')),
        body: AudioStreamDemo(),
      ),
    );
  }
}

class AudioStreamDemo extends StatefulWidget {
  @override
  _AudioStreamDemoState createState() => _AudioStreamDemoState();
}

class _AudioStreamDemoState extends State<AudioStreamDemo> {
  BabylogAudioPlugin? _babylogAudioPlugin;
  bool _isStreaming = false;
  List<AudioSegment> _segments = [];
  // final FlutterSoundRecorder _recorder = FlutterSoundRecorder();
  // final FlutterSoundPlayer _player = FlutterSoundPlayer();
  // late Uint8List _recordedAudioBytes;
  // late String _path;

  @override
  void initState() {
    super.initState();
    _babylogAudioPlugin = BabylogAudioPlugin();
    _babylogAudioPlugin?.segmentsStream.listen((segments) {
      setState(() {
        _segments = segments;
      });
    });
    // _init();
  }

  // Future<void> _init() async {
  //   await _recorder.openAudioSession();
  //   await _player.openAudioSession();
  // }

  // Future<void> _startRecording() async {
  //   _path = await _recorder.startRecorder();
  // }

  // Future<void> _stopRecording() async {
  //   await _recorder.stopRecorder();
  //   _recordedAudioBytes = await _recorder.readRecordedBytes(_path);
  // }

  // Future<void> _play() async {
  //   if (_recordedAudioBytes != null) {
  //     await _player.startPlayerFromBuffer(_recordedAudioBytes);
  //   }

  void _toggleStreaming() async {
    if (!_isStreaming) {
      await _babylogAudioPlugin?.connect('ws://localhost:8080');
    } else {
      await _babylogAudioPlugin?.disconnect();
    }

    // if (!_isStreaming) {
    //   await _babylogAudioPlugin?.connect('ws://localhost:8080');
    //   await _startRecording();
    // } else {
    //   await _babylogAudioPlugin?.disconnect();
    //   await _stopRecording();
    // }

    setState(() {
      _isStreaming = !_isStreaming;
    });
  }

  void _sendAudioMessage() async {
    var audioData = Uint8List.fromList([1, 2, 3, 4]);
    await _babylogAudioPlugin?.sendAudioMessage(audioData, 44100, 1);

    // await _babylogAudioPlugin?.sendAudioMessage(
    //     _recordedAudioBytes, 44100, 1);
    print('Audio message sent.');
  }

  void dispose() {
    _babylogAudioPlugin?.disconnect();
    // _recorder.closeAudioSession();
    // _player.closeAudioSession();
    // _recorder = null;
    // _player = null;
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Text(
            'Audio Segments:',
            style: TextStyle(fontWeight: FontWeight.bold),
          ),
          Expanded(
            child: ListView.builder(
              itemCount: _segments.length,
              itemBuilder: (context, index) {
                final segment = _segments[index];
                return ListTile(
                  title: Text('Segment ${index + 1}'),
                  subtitle: Text(
                    'Start time: ${segment.startTime}\n'
                    'End time: ${segment.endTime}\n'
                    'Label: ${segment.label}\n'
                    'Transcription: ${segment.transcription}',
                  ),
                );
              },
            ),
          ),
          ElevatedButton(
            onPressed: _toggleStreaming,
            child: Text(_isStreaming ? 'Stop Streaming' : 'Start Streaming'),
          ),
          ElevatedButton(
            onPressed: _isStreaming ? _sendAudioMessage : null,
            child: Text('Send Audio Message'),
          ),
        ],
      ),
    );
  }
}
1
likes
0
points
64
downloads

Publisher

unverified uploader

Weekly Downloads

A flutter plugin for streaming audio via websockets using babylog.

Homepage

License

unknown (license)

Dependencies

flutter, flutter_plugin_android_lifecycle, http, plugin_platform_interface, protobuf, web_socket_channel

More

Packages that depend on babylog_audio_plugin

Packages that implement babylog_audio_plugin