Improve meeting audio mixing pipeline
PR and Push Build/Test / build-and-test (push) Successful in 11m22s

This commit is contained in:
2026-05-29 13:47:21 +02:00
parent 9d0f6a1295
commit 740f93f185
18 changed files with 870 additions and 136 deletions
@@ -1613,6 +1613,37 @@ public sealed class RecordingCoordinatorTests
Assert.True(new FileInfo(session.AudioPath).Length > 44);
}
[Fact]
public async Task TemporaryRecordedAudioStoreDoesNotWriteDiagnosticSidecars()
{
var recordingFolder = Path.Combine(Path.GetTempPath(), "meeting-assistant-tests", Guid.NewGuid().ToString("N"));
var store = new TemporaryRecordedAudioStore(
Options.Create(new MeetingAssistantOptions
{
Recording = new RecordingOptions
{
SampleRate = 16000,
Channels = 1,
TemporaryRecordingsFolder = recordingFolder
}
}),
NullLogger<TemporaryRecordedAudioStore>.Instance);
await using var session = await store.CreateSessionAsync(CancellationToken.None);
await session.AppendAsync(new AudioChunk([3, 0], 16000, 1), CancellationToken.None);
await session.CompleteAsync(CancellationToken.None);
var microphonePath = Path.Combine(
recordingFolder,
$"{Path.GetFileNameWithoutExtension(session.AudioPath)}-microphone.wav");
var systemPath = Path.Combine(
recordingFolder,
$"{Path.GetFileNameWithoutExtension(session.AudioPath)}-system.wav");
Assert.True(new FileInfo(session.AudioPath).Length > 44);
Assert.False(File.Exists(microphonePath));
Assert.False(File.Exists(systemPath));
}
[Fact]
public async Task TemporaryRecordedAudioStoreDeletesStaleRecordingsOnStartup()
{