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),
];
///