npm.io
1.0.2 • Published 4h ago

@audio/speech-lpc

Licence
MIT
Version
1.0.2
Deps
1
Size
7 kB
Vulns
0
Weekly
0
Stars
7

@audio/speech-lpc npm MIT

Linear Predictive Coding analysis/synthesis

npm install @audio/speech-lpc
import { lpcAnalysis, lpcSynthesize } from '@audio/speech-lpc'

Linear Predictive Coding — estimates the vocal tract transfer function from a speech signal.

Analysis: autocorrelation method + Levinson-Durbin recursion (via @audio/lpc) → LPC coefficients + residual
Synthesis: all-pole filter reconstructs signal from residual excitation
Round-trip: lpcAnalysislpcSynthesize recovers the original signal exactly

// Analysis: extract vocal tract model
let { coefs, gain, residual } = lpcAnalysis(speechFrame, { order: 12 })

// Synthesis: reconstruct from residual
lpcSynthesize(residual, { coefs, gain })   // residual → reconstructed speech

// Modify pitch: replace residual with different excitation
let buzz = generatePulseTrainAtNewPitch()
lpcSynthesize(buzz, { coefs, gain })       // speech at new pitch
Function Param Default
lpcAnalysis order 12 LPC order
lpcSynthesize coefs required, Float64Array/number[] from lpcAnalysis
gain 1 excitation scale

lpcAnalysis returns { coefs, gain, residual }: coefs is a[1..order] of $A(z) = 1 + \sum a_k z^{-k}$; gain is the per-sample prediction-error std; residual is the whitening-filter output normalized to unit power — feed it straight to lpcSynthesize, or replace it with a different excitation (pulse train, noise) to resynthesize at a new pitch.

lpcSynthesize keeps its all-pole state (params._s) on the params object — pass the same object across chunks to continue the synthesis filter state.

Origin: Atal & Hanauer, "Speech Analysis and Synthesis by Linear Prediction of the Speech Wave" (1971); foundation of CELP, GSM, and modern speech codecs.

Use when: speech coding, pitch modification, voice conversion, formant estimation, speech analysis.


Part of @audio/filter — the filter family umbrella. This README is generated from the umbrella docs.

MIT audiojs

Keywords