Public Access
Archive summary refinements and profile switching
PR and Push Build/Test / build-and-test (push) Successful in 6m37s
PR and Push Build/Test / build-and-test (push) Successful in 6m37s
This commit is contained in:
@@ -220,6 +220,74 @@ public sealed class SpeakerIdentityServiceTests
|
||||
Assert.Equal(0, fixture.SnippetExtractor.ExtractCalls);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SpeakerOverrideAttachesCurrentSampleToExistingNamedIdentity()
|
||||
{
|
||||
await using var fixture = await SpeakerIdentityFixture.CreateAsync();
|
||||
var sabrina = await fixture.AddIdentityAsync([], [1, 2, 3], "Sabrina", referenceCount: 1);
|
||||
var service = fixture.CreateService();
|
||||
var segment = new TranscriptionSegment(TimeSpan.Zero, TimeSpan.FromSeconds(5), "Guest-01", "hello from Sabrina");
|
||||
var request = fixture.CreateRequest(
|
||||
["Sabrina"],
|
||||
[segment],
|
||||
[new SpeakerAudioSample("Guest-01", segment, [9, 9, 9], 95)]);
|
||||
|
||||
await service.ApplySpeakerOverrideAsync(request, "Guest-01", "Sabrina", CancellationToken.None);
|
||||
await service.ProcessFinishedTranscriptAsync(
|
||||
fixture.CreateRequest(
|
||||
["Sabrina"],
|
||||
[segment with { Speaker = "Sabrina" }],
|
||||
knownSpeakerMappings: new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["Guest-01"] = "Sabrina"
|
||||
}),
|
||||
CancellationToken.None);
|
||||
|
||||
var saved = await fixture.LoadIdentityAsync(sabrina.Id);
|
||||
Assert.Equal("Sabrina", saved.CanonicalName);
|
||||
Assert.Equal(2, saved.References.Count);
|
||||
Assert.Contains(saved.Snippets, snippet => snippet.WavBytes.SequenceEqual(new byte[] { 9, 9, 9 }));
|
||||
var allIdentities = await fixture.Context.SpeakerIdentities.ToListAsync();
|
||||
Assert.Single(allIdentities);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SpeakerOverrideCreatesNamedIdentityWhenNoAcceptedNameExists()
|
||||
{
|
||||
await using var fixture = await SpeakerIdentityFixture.CreateAsync();
|
||||
var service = fixture.CreateService();
|
||||
var segment = new TranscriptionSegment(TimeSpan.Zero, TimeSpan.FromSeconds(5), "Guest-01", "hello from Sabrina");
|
||||
var request = fixture.CreateRequest(
|
||||
["Sabrina"],
|
||||
[segment],
|
||||
[new SpeakerAudioSample("Guest-01", segment, [8, 8, 8], 95)]);
|
||||
|
||||
await service.ApplySpeakerOverrideAsync(request, "Guest-01", "Sabrina", CancellationToken.None);
|
||||
|
||||
var saved = await fixture.Context.SpeakerIdentities
|
||||
.Include(identity => identity.References)
|
||||
.Include(identity => identity.Snippets)
|
||||
.SingleAsync();
|
||||
Assert.Equal("Sabrina", saved.CanonicalName);
|
||||
Assert.Single(saved.References);
|
||||
Assert.Contains(saved.Snippets, snippet => snippet.WavBytes.SequenceEqual(new byte[] { 8, 8, 8 }));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SpeakerIdentityDeletionRemovesAcceptedNameFromDatabase()
|
||||
{
|
||||
await using var fixture = await SpeakerIdentityFixture.CreateAsync();
|
||||
var sabrina = await fixture.AddIdentityAsync([], [1, 2, 3], "Sabrina", referenceCount: 1, aliases: ["Sabi"]);
|
||||
await fixture.AddIdentityAsync([], [4, 5, 6], "Manuel", referenceCount: 1);
|
||||
var service = fixture.CreateService();
|
||||
|
||||
await service.DeleteSpeakerIdentityAsync("Sabi", CancellationToken.None);
|
||||
|
||||
var identities = await fixture.Context.SpeakerIdentities.ToListAsync();
|
||||
Assert.DoesNotContain(identities, identity => identity.Id == sabrina.Id);
|
||||
Assert.Contains(identities, identity => identity.CanonicalName == "Manuel");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task LiveKnownSpeakerIdentificationDoesNotMutateIdentityDatabase()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user