createTranscription method

Future<TranscriptionResponse> createTranscription(
  1. TranscriptionRequest request, {
  2. CancellationToken? cancellationToken,
})

Implementation

Future<TranscriptionResponse> createTranscription(
  TranscriptionRequest request, {
  CancellationToken? cancellationToken,
}) async {
  final file = request.file;
  final bufferData = request.bufferedBytes;
  final fields = request
      .toJson()
      .map((key, value) => MapEntry(key, value.toString()))
    ..remove("file");

  final r = MultipartRequest(
      'POST', Uri.parse("${config.baseUrl}/$kTranscriptionEndpoint"))
    ..fields.addAll(fields);

  if (file != null) {
    r.files.add(await MultipartFile.fromPath("file", file));
  } else if (bufferData != null) {
    r.files.add(MultipartFile.fromBytes(
      'file',
      bufferData.data,
      filename: 'audiofile.${bufferData.format}',
    ));
  } else {
    throw Exception("file or bytesArray must be not null");
  }

  final data = await sendFormRequest(r);
  return TranscriptionResponse.fromJson(data);
}