Public Access
This commit is contained in:
@@ -118,9 +118,33 @@ public sealed class AzureSpeechSpeakerIdentityMatcherTests
|
||||
Assert.Null(match);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task MatcherReturnsNullWhenSecondaryValidatorRejectsPrimaryMatch()
|
||||
{
|
||||
var diarizationClient = new FakeSpeakerIdentityDiarizationClient(
|
||||
[
|
||||
new TranscriptionSegment(TimeSpan.Zero, TimeSpan.FromSeconds(1), "Guest-1", "known"),
|
||||
new TranscriptionSegment(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(3), "Guest-1", "unknown")
|
||||
]);
|
||||
var validator = new RejectingSpeakerIdentityMatchValidator();
|
||||
var matcher = CreateMatcher(diarizationClient, validator: validator);
|
||||
var snippet = CreateWavSnippet();
|
||||
|
||||
var match = await matcher.MatchAsync(
|
||||
new SpeakerIdentityMatchRequest(
|
||||
"Guest03",
|
||||
snippet,
|
||||
[new SpeakerIdentityMatchCandidate(42, "Chris", 5, [snippet])]),
|
||||
CancellationToken.None);
|
||||
|
||||
Assert.Null(match);
|
||||
Assert.Equal(1, validator.MatchValidationCount);
|
||||
}
|
||||
|
||||
private static AzureSpeechSpeakerIdentityMatcher CreateMatcher(
|
||||
ISpeakerIdentityDiarizationClient diarizationClient,
|
||||
TimeSpan? matchTimeout = null)
|
||||
TimeSpan? matchTimeout = null,
|
||||
ISpeakerIdentityMatchValidator? validator = null)
|
||||
{
|
||||
return new AzureSpeechSpeakerIdentityMatcher(
|
||||
diarizationClient,
|
||||
@@ -132,7 +156,8 @@ public sealed class AzureSpeechSpeakerIdentityMatcherTests
|
||||
MatchTimeout = matchTimeout ?? TimeSpan.FromMinutes(1)
|
||||
}
|
||||
}),
|
||||
NullLogger<AzureSpeechSpeakerIdentityMatcher>.Instance);
|
||||
NullLogger<AzureSpeechSpeakerIdentityMatcher>.Instance,
|
||||
validator ?? new NoopSpeakerIdentityMatchValidator());
|
||||
}
|
||||
|
||||
private static byte[] CreateWavSnippet()
|
||||
@@ -177,4 +202,22 @@ public sealed class AzureSpeechSpeakerIdentityMatcherTests
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
private sealed class RejectingSpeakerIdentityMatchValidator : ISpeakerIdentityMatchValidator
|
||||
{
|
||||
public int MatchValidationCount { get; private set; }
|
||||
|
||||
public Task<bool> ValidateSampleAsync(byte[] wavBytes, CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
public Task<bool> ValidateMatchAsync(
|
||||
SpeakerIdentityMatchValidationRequest request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
MatchValidationCount++;
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user