Add meeting assistant speech and summary automation

This commit is contained in:
2026-05-21 09:55:39 +02:00
parent 1e97d2b9ff
commit 48d98d9cbb
63 changed files with 5143 additions and 151 deletions
@@ -36,7 +36,7 @@ public sealed class FunAsrStreamingTranscriptionProviderTests
new AudioChunk([3, 0, 4, 0], 16000, 1)
};
var segments = await CollectAsync(provider.TranscribeAsync(ToAsyncEnumerable(chunks), CancellationToken.None));
var segments = await CollectAsync(provider.TranscribeAsync(ToAsyncEnumerable(chunks), SpeechRecognitionPipelineOptions.Default, CancellationToken.None));
Assert.Equal(new Uri("ws://localhost:10095"), connection.ConnectedEndpoint);
Assert.Equal(2, connection.BinaryMessages.Count);
@@ -75,6 +75,7 @@ public sealed class FunAsrStreamingTranscriptionProviderTests
var segments = await CollectAsync(provider.TranscribeAsync(
ToAsyncEnumerable([new AudioChunk([1, 0], 16000, 1)]),
SpeechRecognitionPipelineOptions.Default,
CancellationToken.None));
Assert.Collection(
@@ -95,6 +96,22 @@ public sealed class FunAsrStreamingTranscriptionProviderTests
});
}
[Fact]
public void BuildHotwordsSerializesDictationWordsWithDeduplication()
{
var hotwords = FunAsrStreamingTranscriptionProvider.BuildHotwords([
"PBI",
"pbi",
"Product Backlog Item",
" "
]);
using var document = JsonDocument.Parse(hotwords);
Assert.Equal(20, document.RootElement.GetProperty("PBI").GetInt32());
Assert.Equal(20, document.RootElement.GetProperty("Product Backlog Item").GetInt32());
Assert.Equal(2, document.RootElement.EnumerateObject().Count());
}
private static async IAsyncEnumerable<AudioChunk> ToAsyncEnumerable(IEnumerable<AudioChunk> chunks)
{
foreach (var chunk in chunks)