Skip to content

Commit 64fe6f1

Browse files
authored
Throw exception when streaming is used with unsupported whisper-1 model (#537)
Throw exception when streaming is used with unsupported whisper-1 model
1 parent dff9bb5 commit 64fe6f1

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

src/Custom/Audio/AudioClient.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ public virtual AsyncCollectionResult<StreamingAudioTranscriptionUpdate> Transcri
229229
Argument.AssertNotNull(audio, nameof(audio));
230230
Argument.AssertNotNullOrEmpty(audioFilename, nameof(audioFilename));
231231

232+
EnsureModelSupportsStreaming();
233+
232234
MultiPartFormDataBinaryContent content
233235
= CreatePerCallTranscriptionOptions(options, stream: true)
234236
.ToMultipartContent(audio, audioFilename);
@@ -245,6 +247,8 @@ public virtual AsyncCollectionResult<StreamingAudioTranscriptionUpdate> Transcri
245247
{
246248
Argument.AssertNotNullOrEmpty(audioFilePath, nameof(audioFilePath));
247249

250+
EnsureModelSupportsStreaming();
251+
248252
FileStream inputStream = File.OpenRead(audioFilePath);
249253

250254
MultiPartFormDataBinaryContent content
@@ -266,6 +270,8 @@ public virtual CollectionResult<StreamingAudioTranscriptionUpdate> TranscribeAud
266270
Argument.AssertNotNull(audio, nameof(audio));
267271
Argument.AssertNotNullOrEmpty(audioFilename, nameof(audioFilename));
268272

273+
EnsureModelSupportsStreaming();
274+
269275
MultiPartFormDataBinaryContent content
270276
= CreatePerCallTranscriptionOptions(options, stream: true)
271277
.ToMultipartContent(audio, audioFilename);
@@ -282,6 +288,8 @@ public virtual CollectionResult<StreamingAudioTranscriptionUpdate> TranscribeAud
282288
{
283289
Argument.AssertNotNullOrEmpty(audioFilePath, nameof(audioFilePath));
284290

291+
EnsureModelSupportsStreaming();
292+
285293
FileStream inputStream = File.OpenRead(audioFilePath);
286294

287295
MultiPartFormDataBinaryContent content
@@ -296,6 +304,20 @@ MultiPartFormDataBinaryContent content
296304
return result;
297305
}
298306

307+
private void EnsureModelSupportsStreaming()
308+
{
309+
if (string.Equals(_model, "whisper-1", StringComparison.OrdinalIgnoreCase))
310+
{
311+
string isEnabled = Environment.GetEnvironmentVariable("OPENAI_ENABLE_WHISPER_1_STREAMING");
312+
if (!string.Equals(isEnabled, "true", StringComparison.OrdinalIgnoreCase))
313+
{
314+
throw new NotSupportedException(
315+
"The selected model 'whisper-1' does not support streaming transcription. " +
316+
"Please use a compatible model or set the environment variable 'OPENAI_ENABLE_WHISPER_1_STREAMING=true' to bypass this check.");
317+
}
318+
}
319+
}
320+
299321
#endregion
300322

301323
#region TranslateAudio

tests/Audio/TranscriptionTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,4 +322,30 @@ public async Task StreamingTranscriptionWorks(AudioSourceKind audioSourceKind)
322322

323323
inputStream?.Dispose();
324324
}
325+
326+
[Test]
327+
[TestCase(AudioSourceKind.UsingStream)]
328+
[TestCase(AudioSourceKind.UsingFilePath)]
329+
public void StreamingTranscriptionThrowsForWhisperModel(AudioSourceKind audioSourceKind)
330+
{
331+
AudioClient client = GetTestClient<AudioClient>(TestScenario.Audio_Whisper);
332+
string filename = "audio_hello_world.mp3";
333+
string path = Path.Combine("Assets", filename);
334+
335+
if (audioSourceKind == AudioSourceKind.UsingStream)
336+
{
337+
using FileStream inputStream = File.OpenRead(path);
338+
Assert.Throws<NotSupportedException>(() =>
339+
{
340+
_ = client.TranscribeAudioStreamingAsync(inputStream, filename);
341+
});
342+
}
343+
else if (audioSourceKind == AudioSourceKind.UsingFilePath)
344+
{
345+
Assert.Throws<NotSupportedException>(() =>
346+
{
347+
_ = client.TranscribeAudioStreamingAsync(path);
348+
});
349+
}
350+
}
325351
}

0 commit comments

Comments
 (0)