Configuration Reference ======================= All configuration parameters for pstrain. alignment --------- ``alignment.beam`` :Type: ``float`` :Default: ``1e-64`` :Description: Viterbi pruning beam ``alignment.failed_alignment`` :Type: ``recover | abort | omit`` :Default: ``'recover'`` :Description: Forced-alignment failure policy: ``recover`` retries final-state failures at each ``retry_beam_factor`` in turn; ``abort`` and ``omit`` do not retry ``alignment.retry_acceptance_target`` :Type: ``float | None`` :Default: ``0.05`` :Description: Fraction of this run's normal first-pass alignments that the retry acceptance check would reject, used to calibrate its threshold at each retry beam; a retry-recovered alignment scoring below that threshold is treated as not recovered. null accepts retries unchecked. First-pass alignments are never checked ``alignment.retry_beam_factor`` :Type: ``float | list[float]`` :Default: ``1e+136`` :Description: Factor that widens the beam for one retry after an utterance fails to reach its final state, where values at or below 1 disable the retry; or an ascending list of factors, each greater than 1 and relative to the nominal beam, tried in order until one succeeds. The default retries once at 1e-200 on the default beam. Retry-recovered alignments must pass the acceptance check (``retry_acceptance_target``) ``alignment.verbatim_tokens`` :Type: ``bool`` :Default: ``False`` :Description: Honor explicit pronunciation tokens such as WORD(2) exactly during forced alignment, matching PocketSphinx token handling. When false, suffixes collapse to the base word and the vendored aligner considers its alternatives. This does not alter training description ----------- ``description`` :Type: ``str`` :Default: ``''`` :Description: Human-readable profile purpose features -------- ``features.agc`` :Type: ``str`` :Default: ``'none'`` :Description: Automatic gain-control mode ``features.alpha`` :Type: ``float`` :Default: ``0.97`` :Description: Pre-emphasis coefficient ``features.cmn`` :Type: ``str`` :Default: ``'batch'`` :Description: Cepstral mean-normalization mode ``features.cmninit`` :Type: ``str`` :Default: ``'40,3,-1'`` :Description: Initial cepstral mean vector for live CMN ``features.dither`` :Type: ``bool`` :Default: ``True`` :Description: Add half-bit dither to input audio ``features.feat_type`` :Type: ``str`` :Default: ``'1s_c_d_dd'`` :Description: Sphinx feature stream type ``features.frate`` :Type: ``int`` :Default: ``100`` :Description: Feature frame rate in Hz ``features.lifter`` :Type: ``int`` :Default: ``22`` :Description: Cepstral lifter window ``features.lowerf`` :Type: ``float`` :Default: ``130.0`` :Description: Lower filter-bank frequency in Hz ``features.ncep`` :Type: ``int`` :Default: ``13`` :Description: Number of cepstral coefficients ``features.nfft`` :Type: ``int`` :Default: ``512`` :Description: FFT size ``features.nfilt`` :Type: ``int`` :Default: ``25`` :Description: Number of mel filters ``features.remove_dc`` :Type: ``bool`` :Default: ``True`` :Description: Remove DC offset from each frame ``features.remove_noise`` :Type: ``bool`` :Default: ``True`` :Description: Remove noise with spectral subtraction ``features.samprate`` :Type: ``int`` :Default: ``16000`` :Description: Audio sample rate in Hz ``features.seed`` :Type: ``int`` :Default: ``-1`` :Description: Seed for deterministic input dithering ``features.transform`` :Type: ``str`` :Default: ``'dct'`` :Description: Filter-bank transform ``features.upperf`` :Type: ``float`` :Default: ``6800.0`` :Description: Upper filter-bank frequency in Hz ``features.varnorm`` :Type: ``str`` :Default: ``'no'`` :Description: Cepstral variance-normalization mode ``features.wlen`` :Type: ``float`` :Default: ``0.025625`` :Description: Analysis window length in seconds runner ------ ``runner.jobs`` :Type: ``int | None`` :Default: ``None`` :Description: Parallel workers; null means auto ``runner.nice`` :Type: ``int`` :Default: ``5`` :Description: Worker niceness increment sharding -------- ``sharding.partition_position`` :Type: ``remainder-first | remainder-last`` :Default: ``'remainder-first'`` :Description: Position of uneven Baum-Welch partition capacity: ``remainder-first`` distributes one extra utterance to each leading shard (the pstrain policy); ``remainder-last`` gives the entire remainder to the final shard (the upstream SphinxTrain policy) split ----- ``split.seed`` :Type: ``int`` :Default: ``42`` :Description: Deterministic split seed ``split.test_count`` :Type: ``int | None`` :Default: ``None`` :Description: Fixed test utterance count; zero disables an additional holdout ``split.train_ratio`` :Type: ``float | None`` :Default: ``None`` :Description: Training fraction training -------- ``training.a_beam`` :Type: ``float`` :Default: ``1e-90`` :Description: Forward alignment beam ``training.accept_arctic_a0587_known_skip`` :Type: ``bool`` :Default: ``False`` :Description: Deprecated for live profiles: retained solely for the Arctic pin's retired off-profile provenance; live benchmark cells run exception-free ``training.arctic_a0302_zero_codebook_band`` :Type: ``tuple[int, int] | None`` :Default: ``None`` :Description: Accepted inclusive exact-zero codebook occupancy band for the singular Arctic a0302 terminal-alignment exception ``training.b_beam`` :Type: ``float`` :Default: ``1e-10`` :Description: Backward alignment beam ``training.bw_checkpoint_iterations`` :Type: ``bool`` :Default: ``False`` :Description: Retain the compact model files from every completed Baum-Welch pass under ``iterations/NN``; costs roughly one additional model copy per pass and does not retain the much larger ``.bw-accum`` shard accumulators or change which checkpoint is loaded by training. The deprecated ``PSTRAIN_BW_CHECKPOINTS=1`` environment variable can also enable retention, but cannot disable a true profile setting ``training.ci.convergence_ratio`` :Type: ``float`` :Default: ``0.001`` :Description: Converge after min_iterations when the finite per-frame log-likelihood increase is between zero and this many nats, inclusive. Negative or nonfinite changes do not indicate convergence. Despite the name -- kept because SphinxTrain's $CFG_CONVERGENCE_RATIO is the same signed per-frame delta -- this is an absolute difference, not a ratio. At the default, corpora of Arctic's size run all ten passes in every schedule, which is the more accurate outcome as measured; treat max_iterations as the operative control. The sphinxtrain profile carries SphinxTrain's own 0.1 ``training.ci.max_iterations`` :Type: ``int`` :Default: ``10`` :Description: Maximum training passes ``training.ci.min_iterations`` :Type: ``int`` :Default: ``1`` :Description: Minimum training passes ``training.exclusion_schedule`` :Type: ``dict`` :Default: ``{}`` :Description: Experimental stage/pass utterance exclusions ``training.failed_alignment`` :Type: ``recover | abort | omit`` :Default: ``'recover'`` :Description: Action when an utterance fails to reach its final state: ``recover`` runs the wider-beam retries in ``retry_beam_factor`` and, if they all fail, reports the utterance and continues without it; ``abort`` fails the run on the first failure; and ``omit`` reports and excludes it without retrying. Skips are counted either way, and ``max_skip_fraction`` still fails the run when they stop being incidental ``training.max_skip_fraction`` :Type: ``float`` :Default: ``0.05`` :Description: Maximum skipped-update fraction ``training.multipron_training`` :Type: ``bool`` :Default: ``True`` :Description: Sum posteriors over pronunciation variants; when disabled without an explicit inventory policy, untied inventory resolves to upstream-compatible ``linear`` ``training.n_senones`` :Type: ``int`` :Default: ``200`` :Description: Target tied-state count ``training.n_state`` :Type: ``int`` :Default: ``3`` :Description: Emitting states per HMM ``training.optional_final_silence`` :Type: ``bool`` :Default: ``True`` :Description: Permit final transcript silence to consume zero frames; stock SphinxTrain requires that silence to consume at least one frame ``training.question_niter`` :Type: ``int`` :Default: ``1`` :Description: Question generation iterations ``training.question_npermute`` :Type: ``int`` :Default: ``12`` :Description: Question permutations ``training.question_quests_per_state`` :Type: ``int`` :Default: ``20`` :Description: Questions generated per state ``training.retry_beam_factor`` :Type: ``float | list[float]`` :Default: ``10000000000.0`` :Description: Factor that widens the forward beam for one retry after an utterance fails to reach its final state, or an ascending list of factors, each greater than 1 and relative to the nominal beam, tried in order until one succeeds; a retry is counted only when that attempt runs ``training.skip_state`` :Type: ``bool`` :Default: ``False`` :Description: Enable SphinxTrain's $CFG_SKIPSTATE topology, adding an arc from each eligible emitting state to the state two positions ahead so a phone can be realized with fewer frames than states. SphinxTrain writes raw 3/1/1 weights and normalizes them on read; pstrain writes the behaviorally equivalent normalized values ``training.split_variance_floor_fraction`` :Type: ``float`` :Default: ``0.0`` :Description: Experimental variance lower bound for split training stages, as a fraction of each matching coordinate in the fixed CI-1g or CD-1g variance reference. Zero disables regularization. The reference never advances with later splits; zero reference coordinates contribute no positive floor. Select a nonzero fraction explicitly after evaluation; no universal nonzero value is assumed ``training.tied.convergence_ratio`` :Type: ``float`` :Default: ``0.001`` :Description: Converge after min_iterations when the finite per-frame log-likelihood increase is between zero and this many nats, inclusive. Negative or nonfinite changes do not indicate convergence. Despite the name -- kept because SphinxTrain's $CFG_CONVERGENCE_RATIO is the same signed per-frame delta -- this is an absolute difference, not a ratio. At the default, corpora of Arctic's size run all ten passes in every schedule, which is the more accurate outcome as measured; treat max_iterations as the operative control. The sphinxtrain profile carries SphinxTrain's own 0.1 ``training.tied.max_iterations`` :Type: ``int`` :Default: ``10`` :Description: Maximum training passes ``training.tied.min_iterations`` :Type: ``int`` :Default: ``1`` :Description: Minimum training passes ``training.tree_csplitmax`` :Type: ``int`` :Default: ``2000`` :Description: Maximum phone-context splits ``training.tree_csplitthr`` :Type: ``float`` :Default: ``0.0`` :Description: Phone-context split threshold ``training.tree_directional_questions`` :Type: ``bool`` :Default: ``True`` :Description: Honor _L/_R tree-question suffixes; disable only for isolation measurements ``training.tree_intermediate_dumps`` :Type: ``bool`` :Default: ``False`` :Description: Dump intermediate decision trees to worker diagnostics ``training.tree_mwfloor`` :Type: ``float`` :Default: ``1e-08`` :Description: Tree mixture-weight floor ``training.tree_rotate_state_weights`` :Type: ``bool`` :Default: ``True`` :Description: Apply target-relative tree state weights; disable only for isolation measurements ``training.tree_ssplitmax`` :Type: ``int`` :Default: ``7`` :Description: Maximum state splits ``training.tree_ssplitthr`` :Type: ``float`` :Default: ``0.0`` :Description: State split threshold ``training.tree_state_weights`` :Type: ``tuple`` :Default: ``(1.0, 0.05, 0.0)`` :Description: Decision-tree state weights ``training.untied.convergence_ratio`` :Type: ``float`` :Default: ``0.001`` :Description: Converge after min_iterations when the finite per-frame log-likelihood increase is between zero and this many nats, inclusive. Negative or nonfinite changes do not indicate convergence. Despite the name -- kept because SphinxTrain's $CFG_CONVERGENCE_RATIO is the same signed per-frame delta -- this is an absolute difference, not a ratio. At the default, corpora of Arctic's size run all ten passes in every schedule, which is the more accurate outcome as measured; treat max_iterations as the operative control. The sphinxtrain profile carries SphinxTrain's own 0.1 ``training.untied.max_iterations`` :Type: ``int`` :Default: ``10`` :Description: Maximum training passes ``training.untied.min_iterations`` :Type: ``int`` :Default: ``1`` :Description: Minimum training passes ``training.untied_inventory`` :Type: ``all-triphone | transcript-reachable | linear`` :Default: ``'transcript-reachable'`` :Description: Untied-model phone inventory policy: ``transcript-reachable`` includes contexts reachable through every pronunciation when multipron training is enabled; upstream-compatible ``linear`` includes contexts observed through each transcript word's first pronunciation; ``all-triphone`` includes the complete phoneset cross-product