createRealtimeTranscriptionSession method

Future<RealtimeTranscriptionSession> createRealtimeTranscriptionSession({
  1. BetaAudioFormat inputAudioFormat = BetaAudioFormat.pcm16,
  2. InputAudioTranscription? inputAudioTranscription,
  3. NoiseReduction? inputAudioNoiseReduction,
  4. TurnDetection? turnDetection,
  5. List<String>? include,
  6. String? clientSecretAnchor,
  7. int? clientSecretSeconds,
})

Implementation

Future<RealtimeTranscriptionSession> createRealtimeTranscriptionSession({
  //List<Modality> modalities = const [Modality.audio, Modality.text],
  BetaAudioFormat inputAudioFormat = BetaAudioFormat.pcm16,
  InputAudioTranscription? inputAudioTranscription,
  NoiseReduction? inputAudioNoiseReduction,
  TurnDetection? turnDetection,
  List<String>? include,
  // client-secret
  String? clientSecretAnchor,
  int? clientSecretSeconds,
}) async {
  final payload = {
    //'modalities': modalities.map((m) => m.toJson()).toList(),
    if (inputAudioFormat != BetaAudioFormat.pcm16) 'input_audio_format': inputAudioFormat.toJson(),
    if (inputAudioTranscription != null) 'input_audio_transcription': inputAudioTranscription.toJson(),
    if (inputAudioNoiseReduction != null) 'input_audio_noise_reduction': inputAudioNoiseReduction.toJson(),
    if (turnDetection != null) 'turn_detection': turnDetection.toJson(),
    if (include != null) 'include': include,
    if (clientSecretAnchor != null || clientSecretSeconds != null)
      'client_secret': {
        'expires_after': {
          if (clientSecretAnchor != null) 'anchor': clientSecretAnchor,
          if (clientSecretSeconds != null) 'seconds': clientSecretSeconds,
        }
      },
  };

  final res = await postJson('/realtime/transcription_sessions', payload);
  if (res.statusCode == 200) {
    return RealtimeTranscriptionSession.fromJson(jsonDecode(res.body));
  }
  throw OpenAIRequestException.fromHttpResponse(res);
}