start method

Future<void> start({
  1. required void onChunk(
    1. Float32List chunk,
    2. bool isFinal
    ),
})

Implementation

Future<void> start({
  required void Function(Float32List chunk, bool isFinal) onChunk,
}) async {
  await stop();
  _isRecording = true;
  _recorder = AudioRecorder();

  final hasPerm = await _recorder!.hasPermission();
  if (!hasPerm) {
    _isRecording = false;
    log('Microphone permission not granted on Web.');
    return;
  }

  try {
    final stream = await _recorder!.startStream(
      const RecordConfig(
        encoder: AudioEncoder.pcm16bits,
        sampleRate: recordSampleRate,
        numChannels: numChannels,
      ),
    );

    _subscription = stream.listen((Uint8List chunk) {
      if (!_isRecording) return;
      final float32 = _pcm16ToFloat32(chunk);
      onChunk(float32, false);
    });
  } catch (e, stack) {
    log('AudioProcessor start error: $e\n$stack');
  }
}