nx_voice_codec_tier.nx source
↩ module page · 109 lines · 3667 B
1// nx_voice_codec_tier.nx -- tier-adaptive parameter selection.
2//
3// Reads `nx_hwprobe`'s tier verdict; returns the right codec params
4// for that tier. Same library serves T0 MCU through T5 HPC; the
5// adaptivity is at substrate level, not vendor-driven.
6//
7// Per cardinal feedback-scale-agnostic-substrate + feedback-self-
8// aware-substrate-user-improvable: every tier choice is queryable
9// via nx_self_audit so the operator can see what the codec picked
10// and why.
11//
12// genealogy_id: feedback-scale-agnostic-substrate + feedback-numeric-
13// tier-ladder + nx_hwprobe + opus_complexity_tables
14// lineage_id: nishi_voice_codec_tier_dispatch_q10
15
16// nx_safety_envelope:
17// intended_use: AUTO_APPLIED -- primitive-specific tuning queued
18// sil_target: SIL1
19// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail]
20// verdict: NOT_YET_EVALUATED
21
22import "nx_syscalls.nx"
23import "nx_hwprobe.nx"
24
25// Codec parameter packet returned to caller.
26struct VoiceCodecParams {
27 frame_ms: i64, // 10 or 20
28 sample_rate_khz: i64, // 8, 16, 24, 48
29 bitrate_kbps: i64, // 2..32
30 lpc_order: i64, // 6..20
31 codebook_size: i64, // 4, 64, 1024, 32768
32 fec_enabled: i64, // 0/1
33 neural_residual: i64, // 0/1
34 tier_used: i64 // copy of the NX_HW_TIER_* used
35}
36
37// Pick recommended params for a given tier. Caller can override any
38// field afterwards (the codec respects whatever the caller passes;
39// these are defaults).
40func nx_voice_codec_params_for_tier(out: *VoiceCodecParams, tier: i64) -> i64 {
41 out.tier_used = tier
42
43 // T0 MCU: 2 kbps, 8 kHz, order 6, 4-entry codebook, no FEC, no neural.
44 if tier == NX_HW_TIER_MCU {
45 out.frame_ms = 20
46 out.sample_rate_khz = 8
47 out.bitrate_kbps = 2
48 out.lpc_order = 6
49 out.codebook_size = 4
50 out.fec_enabled = 0
51 out.neural_residual = 0
52 return 0
53 }
54
55 // T1 sovereign-chip: 4-8 kbps, 8 kHz, order 10, 64-entry codebook, FEC.
56 if tier == NX_HW_TIER_SOVEREIGN {
57 out.frame_ms = 20
58 out.sample_rate_khz = 8
59 out.bitrate_kbps = 6
60 out.lpc_order = 10
61 out.codebook_size = 64
62 out.fec_enabled = 1
63 out.neural_residual = 0
64 return 0
65 }
66
67 // T2 family device: 8-16 kbps, 16 kHz, order 12, 1024-entry, FEC.
68 if tier == NX_HW_TIER_FAMILY {
69 out.frame_ms = 20
70 out.sample_rate_khz = 16
71 out.bitrate_kbps = 12
72 out.lpc_order = 12
73 out.codebook_size = 1024
74 out.fec_enabled = 1
75 out.neural_residual = 0
76 return 0
77 }
78
79 // T3 workstation: 16-24 kbps, 16 kHz, order 14, neural-residual ON.
80 if tier == NX_HW_TIER_WORKSTATION {
81 out.frame_ms = 10
82 out.sample_rate_khz = 16
83 out.bitrate_kbps = 16
84 out.lpc_order = 14
85 out.codebook_size = 32768
86 out.fec_enabled = 1
87 out.neural_residual = 1
88 return 0
89 }
90
91 // T4 server / T5 HPC: full Phase 4b on every parameter.
92 out.frame_ms = 10
93 out.sample_rate_khz = 24
94 out.bitrate_kbps = 24
95 out.lpc_order = 16
96 out.codebook_size = 32768
97 out.fec_enabled = 1
98 out.neural_residual = 1
99 return 0
100}
101
102// One-shot: probe the running machine, return its codec params.
103// Caller doesn't need to know the tier mechanism -- it just gets
104// "the right defaults for here."
105func nx_voice_codec_init(out: *VoiceCodecParams) -> i64 {
106 let summary: *HwSummary = sys_mmap(256) as *HwSummary
107 nx_hwprobe(summary)
108 return nx_voice_codec_params_for_tier(out, summary.tier)
109}