diff --git a/app/MindWork AI Studio/Models/Kinds/TranscriptionModelsFamily.cs b/app/MindWork AI Studio/Models/Kinds/TranscriptionModelsFamily.cs index ec8d3e30..a2ed9a41 100644 --- a/app/MindWork AI Studio/Models/Kinds/TranscriptionModelsFamily.cs +++ b/app/MindWork AI Studio/Models/Kinds/TranscriptionModelsFamily.cs @@ -16,7 +16,7 @@ public sealed class TranscriptionModelsFamily : ModelFamily public override ModelVendor Vendor => ModelVendor.UNKNOWN; /// - public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=automatic-speech-recognition", new DateOnly(2026, 9, 12), "Ported from the transcription markers of Provider/ModelKindExtensions.cs, minus the two which their own families now state."); + public override ModelSource Source => new("https://huggingface.co/models?pipeline_tag=automatic-speech-recognition", new DateOnly(2026, 9, 19), "Ported from the transcription markers of Provider/ModelKindExtensions.cs, minus the two which their own families now state. Canary came later: the markers never named it, so it reached the answer meant for everything nobody wrote a rule for."); /// protected override void Declare(ModelFamilyBuilder builder) @@ -27,5 +27,11 @@ public sealed class TranscriptionModelsFamily : ModelFamily builder.Modifier("wav2vec").AsSubstring().Inherits(); builder.Modifier("parakeet").AsSubstring().Inherits(); + + // NVIDIA's other line of speech models, written plain: canary-1b, canary-1b-flash, + // canary-180m-flash. A segment rather than a substring, because canary is an ordinary + // English word which would otherwise reach into names it has nothing to do with -- the + // same reason the embedding family gives for gte. + builder.Modifier("canary").AsSegment().Inherits(); } } \ No newline at end of file diff --git a/app/Tests/Models/Corpus/ModelKindCorpus.cs b/app/Tests/Models/Corpus/ModelKindCorpus.cs index 4b30075f..2ac22e86 100644 --- a/app/Tests/Models/Corpus/ModelKindCorpus.cs +++ b/app/Tests/Models/Corpus/ModelKindCorpus.cs @@ -82,6 +82,12 @@ public static class ModelKindCorpus new(SELF_HOSTED, "parakeet-tdt-0.6b-v2", TRANSCRIPTION), new(SELF_HOSTED, "wav2vec2-large-xlsr-53", TRANSCRIPTION), new(MISTRAL, "voxtral-mini-latest", TRANSCRIPTION), + + // NVIDIA's other speech line, once plain and once as the hub names it. The second one is + // what makes the rule a segment worth keeping: the organization comes off before any rule + // sees the name, so what is left has to carry the word on its own. + new(SELF_HOSTED, "canary-1b-flash", TRANSCRIPTION), + new(SELF_HOSTED, "nvidia/canary-180m-flash", TRANSCRIPTION), ]; ///