From c5379425910b7831a6523160f836b19206f642d5 Mon Sep 17 00:00:00 2001 From: Sunny Deng Date: Mon, 2 Dec 2024 16:02:19 +0800 Subject: [PATCH] fix: should set _isSendingAudio to false after sending buffer --- .../RealtimeConversationSession.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Custom/RealtimeConversation/RealtimeConversationSession.cs b/src/Custom/RealtimeConversation/RealtimeConversationSession.cs index 960f817e..d1bb3d8f 100644 --- a/src/Custom/RealtimeConversation/RealtimeConversationSession.cs +++ b/src/Custom/RealtimeConversation/RealtimeConversationSession.cs @@ -139,9 +139,19 @@ public virtual async Task SendInputAudioAsync(BinaryData audio, CancellationToke _isSendingAudio = true; } // TODO: consider automatically limiting/breaking size of chunk (as with streaming) - InternalRealtimeClientEventInputAudioBufferAppend internalCommand = new(audio); - BinaryData requestData = ModelReaderWriter.Write(internalCommand); - await SendCommandAsync(requestData, cancellationToken.ToRequestOptions()).ConfigureAwait(false); + try + { + InternalRealtimeClientEventInputAudioBufferAppend internalCommand = new(audio); + BinaryData requestData = ModelReaderWriter.Write(internalCommand); + await SendCommandAsync(requestData, cancellationToken.ToRequestOptions()).ConfigureAwait(false); + } + finally + { + lock (_sendingAudioLock) + { + _isSendingAudio = false; + } + } } /// @@ -354,4 +364,4 @@ public void Dispose() { WebSocket?.Dispose(); } -} \ No newline at end of file +}