fixes for broken STT

This commit is contained in:
Jacob Dubin
2026-04-18 15:00:12 -05:00
parent a91433c5a0
commit e9fa556bf9
14 changed files with 4154 additions and 29 deletions

View File

@@ -32,12 +32,7 @@ public sealed class JiboWebSocketService(
var parsedType = ReadMessageType(envelope.Text);
session.LastMessageType = parsedType;
var parsedTransId = ReadTransId(envelope.Text);
if (!string.IsNullOrWhiteSpace(parsedTransId))
{
session.LastTransId = parsedTransId;
session.TurnState.TransId = parsedTransId;
}
turnFinalizationService.ObserveIncomingMessage(session, envelope.Text);
if (parsedType == "CONTEXT")
{
@@ -101,27 +96,4 @@ public sealed class JiboWebSocketService(
return "UNKNOWN";
}
private static string? ReadTransId(string? text)
{
if (string.IsNullOrWhiteSpace(text))
{
return null;
}
try
{
using var document = JsonDocument.Parse(text);
if (document.RootElement.TryGetProperty("transID", out var transId) && transId.ValueKind == JsonValueKind.String)
{
return transId.GetString();
}
}
catch
{
return null;
}
return null;
}
}

View File

@@ -17,6 +17,21 @@ public sealed class WebSocketTurnFinalizationService(
private const int AutoFinalizeMinBufferedAudioChunks = 5;
private static readonly TimeSpan AutoFinalizeMinTurnAge = TimeSpan.FromMilliseconds(1800);
public void ObserveIncomingMessage(CloudSession session, string? text)
{
if (!TryReadTransId(text, out var nextTransId) || string.IsNullOrWhiteSpace(nextTransId))
{
return;
}
if (!string.Equals(session.TurnState.TransId, nextTransId, StringComparison.Ordinal))
{
ResetTurnState(session.TurnState, nextTransId);
}
session.LastTransId = nextTransId;
}
public async Task<IReadOnlyList<WebSocketReply>> HandleBinaryAudioAsync(
CloudSession session,
WebSocketMessageEnvelope envelope,
@@ -419,4 +434,30 @@ public sealed class WebSocketTurnFinalizationService(
return false;
}
}
private static bool TryReadTransId(string? text, out string? transId)
{
transId = null;
if (string.IsNullOrWhiteSpace(text))
{
return false;
}
try
{
using var document = JsonDocument.Parse(text);
if (!document.RootElement.TryGetProperty("transID", out var transIdProperty) ||
transIdProperty.ValueKind != JsonValueKind.String)
{
return false;
}
transId = transIdProperty.GetString();
return !string.IsNullOrWhiteSpace(transId);
}
catch
{
return false;
}
}
}