transcribe method

  1. @override
Future<DVAITranscript> transcribe(
  1. List<int> audioBytes, {
  2. String mimeType = 'audio/wav',
  3. String language = 'und',
})
override

Implementation

@override
Future<DVAITranscript> transcribe(
  List<int> audioBytes, {
  String mimeType = 'audio/wav',
  String language = 'und',
}) async {
  if (transcriptionModel.isEmpty) unsupported('a transcription endpoint');
  final boundary = dvGenerateMultipartBoundary();
  final response = await send(
    DVAIHttpRequest(
      url: endpoint('/v1/audio/transcriptions'),
      headers: <String, String>{
        'content-type': 'multipart/form-data; boundary=$boundary',
        ...authHeaders,
      },
      body: dvEncodeMultipartBody(
        boundary: boundary,
        fields: <String, String>{
          'model': transcriptionModel,
          if (language != 'und') 'language': language,
        },
        fileField: 'file',
        fileName: dvAudioFileNameFor(mimeType),
        fileContentType: mimeType,
        fileBytes: audioBytes,
      ),
    ),
  );
  final payload = decodeJsonResponse(response);
  return DVAITranscript(
    text: readString(payload, 'text'),
    language: language,
    metadata: <String, DVJsonValue>{
      'model': DVJsonString(transcriptionModel),
      'mimeType': DVJsonString(mimeType),
      'byteLength': DVJsonNumber(audioBytes.length),
    },
  );
}