Public Access
feat: add local Resemblyzer speaker recognition
PR and Push Build/Test / build-and-test (push) Successful in 12m37s
PR and Push Build/Test / build-and-test (push) Successful in 12m37s
This commit is contained in:
@@ -58,6 +58,64 @@ public sealed class LaunchProfileOptionsProviderTests
|
||||
Assert.Equal("Ctrl+Alt+L", profile.Options.Hotkey.Toggle);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CheckedInConfigurationKeepsResemblyzerOptInWithDocumentedDefaults()
|
||||
{
|
||||
var profile = CreateProviderFromAppsettings().GetRequiredProfile(null);
|
||||
|
||||
Assert.False(profile.Options.SpeakerIdentification.Resemblyzer.Enabled);
|
||||
Assert.Equal(5, profile.Options.SpeakerIdentification.Resemblyzer.RequiredVectorsPerSpeaker);
|
||||
Assert.Equal(1000, profile.Options.SpeakerIdentification.Resemblyzer.MaxVectorsPerIdentity);
|
||||
Assert.Equal(20, profile.Options.SpeakerIdentification.Resemblyzer.OutlierPruningMinimumVectors);
|
||||
Assert.Equal(0.75, profile.Options.SpeakerIdentification.Resemblyzer.OutlierPruningNeighborSimilarity);
|
||||
Assert.Equal(3, profile.Options.SpeakerIdentification.Resemblyzer.OutlierPruningMinimumNeighbors);
|
||||
Assert.Equal(0.60, profile.Options.SpeakerIdentification.Resemblyzer.OutlierPruningMinimumClusterRatio);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InvalidResemblyzerOutlierPruningSettingsAreRejected()
|
||||
{
|
||||
var provider = CreateProvider(new Dictionary<string, string?>
|
||||
{
|
||||
["MeetingAssistant:SpeakerIdentification:Resemblyzer:OutlierPruningMinimumClusterRatio"] = "1.1"
|
||||
});
|
||||
|
||||
var exception = Assert.Throws<InvalidOperationException>(
|
||||
() => provider.GetRequiredProfile(null));
|
||||
|
||||
Assert.Contains("OutlierPruningMinimumClusterRatio", exception.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NonFiniteResemblyzerSimilaritySettingsAreRejected()
|
||||
{
|
||||
var provider = CreateProvider(new Dictionary<string, string?>
|
||||
{
|
||||
["MeetingAssistant:SpeakerIdentification:Resemblyzer:MinimumIdentitySimilarity"] = "NaN"
|
||||
});
|
||||
|
||||
var exception = Assert.Throws<InvalidOperationException>(
|
||||
() => provider.GetRequiredProfile(null));
|
||||
|
||||
Assert.Contains("MinimumIdentitySimilarity", exception.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ContradictorySpeakerSampleDurationsAreRejected()
|
||||
{
|
||||
var provider = CreateProvider(new Dictionary<string, string?>
|
||||
{
|
||||
["MeetingAssistant:SpeakerIdentification:MinimumSampleSpeechDuration"] = "00:01:01",
|
||||
["MeetingAssistant:SpeakerIdentification:MaximumSampleDuration"] = "00:01:00"
|
||||
});
|
||||
|
||||
var exception = Assert.Throws<InvalidOperationException>(
|
||||
() => provider.GetRequiredProfile(null));
|
||||
|
||||
Assert.Contains("MinimumSampleSpeechDuration", exception.Message);
|
||||
Assert.Contains("MaximumSampleDuration", exception.Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DuplicateProfileHotkeysAreRejected()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user