getStreamingText method

  1. @override
Stream<SpeechToTextResponse> getStreamingText({
  1. required Stream<List<int>> stream,
  2. SpeechToTextOptions? options,
  3. CancellationToken? cancellationToken,
})
override

Transcribes the given audio stream as a stream of updates.

Implementation

@override
Stream<SpeechToTextResponse> getStreamingText({
  required Stream<List<int>> stream,
  SpeechToTextOptions? options,
  CancellationToken? cancellationToken,
}) {
  Stream<SpeechToTextResponse> streamFn() async* {
    if (_logger.isEnabled(LogLevel.debug)) {
      _logger.logDebug('getStreamingText invoked.');
    }

    if (_logger.isEnabled(LogLevel.trace)) {
      _logger.logTrace(
        'getStreamingText invoked. '
        'Options: '
      '${options != null ? _asJson(_optionsToMap(options)) : 'null'}.',
      );
    }

    try {
      await for (final update in super.getStreamingText(
        stream: stream,
        options: options,
        cancellationToken: cancellationToken,
      )) {
        if (_logger.isEnabled(LogLevel.trace)) {
          _logger.logTrace(
            'getStreamingText received update. '
            'Update: ${_asJson(_responseToMap(update))}.',
          );
        }
        yield update;
      }

      if (_logger.isEnabled(LogLevel.debug)) {
        _logger.logDebug('getStreamingText completed.');
      }
    } on OperationCanceledException {
      if (_logger.isEnabled(LogLevel.debug)) {
        _logger.logDebug('getStreamingText canceled.');
      }
      rethrow;
    } catch (e) {
      _logger.logError('getStreamingText failed.', error: e);
      rethrow;
    }
  }

  return streamFn();
}