fix(asr): restore computer terminology bias

Rebuild the bundled language model and runtime source filtering around a dedicated computer-term corpus so technical dictation keeps domain coverage.
This commit is contained in:
Rocky
2026-08-15 09:07:15 +08:00
parent 704ac2428c
commit 13214e6601
14 changed files with 10625 additions and 3134 deletions
@@ -13,9 +13,9 @@ final class LocalASRBiasAdapterTests: XCTestCase {
let url = dir.appendingPathComponent("phrases.tsv")
let tsv = """
word\tpinyin\tsource\tweight
SwiftUI\tswift ui\tai_tech_seed\t90
Kubernetes\tku bo ne si\tai_tech_seed\t90
一致性\tyi zhi xing\tai_tech_seed\t80
SwiftUI\tswift ui\tcomputer_terms\t5
Kubernetes\tku bo ne si\tcomputer_terms\t5
一致性\tyi zhi xing\tcomputer_terms\t5
"""
try tsv.write(to: url, atomically: true, encoding: .utf8)
addTeardownBlock {
@@ -103,12 +103,11 @@ final class LocalASRBiasAdapterTests: XCTestCase {
func testBuiltinLexiconParsesTSV() {
let terms = BuiltinLexiconIndex.parseTSV(
"word\tpinyin\tsource\tweight\nFoo\tfoo\tai_tech_seed\t80\n"
"word\tpinyin\tsource\tweight\nFoo\tfoo\tcomputer_terms\t5\n"
)
XCTAssertEqual(terms.count, 1)
XCTAssertEqual(terms[0].word, "Foo")
XCTAssertEqual(terms[0].source, "ai_tech_seed")
XCTAssertEqual(terms[0].weight, 80)
XCTAssertEqual(terms[0].weight, 5)
}
func testPolishingServiceMergesDictionarySupplement() {
@@ -106,7 +106,7 @@ final class LocalASRModelCatalogTests: XCTestCase {
func testMLXAdapterProducesPromptBiasNotHardHotwords() throws {
let fixtureURL = FileManager.default.temporaryDirectory
.appendingPathComponent("phrases-\(UUID().uuidString).tsv")
try "word\tpinyin\tsource\tweight\nSwiftUI\tswift ui\tai_tech_seed\t90\n"
try "word\tpinyin\tsource\tweight\nSwiftUI\tswift ui\tcomputer_terms\t5\n"
.write(to: fixtureURL, atomically: true, encoding: .utf8)
defer { try? FileManager.default.removeItem(at: fixtureURL) }