Recognize NVIDIA Canary as a transcription model

This commit is contained in:
Thorsten Sommer 2026-09-19 11:44:02 +02:00
parent e42277beba
commit adcf118108
Signed by untrusted user who does not match committer: tsommer
GPG Key ID: 371BBA77A02C0108
2 changed files with 13 additions and 1 deletions

View File

@ -16,7 +16,7 @@ public sealed class TranscriptionModelsFamily : ModelFamily
public override ModelVendor Vendor => ModelVendor.UNKNOWN;
/// <inheritdoc />
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.");
/// <inheritdoc />
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();
}
}

View File

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