On 2026-08-04 20: 09, Ross Bencina wrote: Correct me if I
misunderstood, but
if I understand correctly, you are proposing the following approach:
Given a
time domain signal assumed to comprise of a quasi-period glottal pulse
train, estimate the
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
On 2026-08-04 20:09, Ross Bencina wrote:
Correct me if I misunderstood, but if I understand correctly,
you are proposing the following approach: Given a time domain
signal assumed to comprise of a quasi-period glottal pulse
train, estimate the onset time and spectrum of each glotal
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
Correct me if I misunderstood, but if I understand correctly, you are
proposing the following approach:
Given a time domain signal assumed to comprise of a quasi-period
glottal
pulse train, estimate the onset time and spectrum of each glotal pulse
(i.e. a vector of pulse spectra and pulse onset times). [Note: by
quasi-periodic we mean a signal with slowly varying fundamental
period,
and small amplitude local period-to-period variability.]
Estimate E_0: First, to bootstrap the estimator assume that the signal
is locally periodic. Form a fundamental frequency analysis and, under
a
perfect periodicity assumption, estimate the onset time (or some
centroid) and pulse spectrum for each glottal pulse.
Resynthesize a time domain pulse train using E_0. Compute a time
domain
residual. (Somehow) extract an error vector comprising pulse spectra
error and pulse time error for each pulse in the estimate.
Then you ask:
Although I have proposed this algorithm, I am yet to implement it.
The main challenge is how the
optimization taking into account the heuristics should be performed.
The simplest idea would be to
optimize each row of the matrix individually using any appropriate
technique (e.g. gradient
descent, Simultaneous Perturbation Stochastic Approximation). Then
repeat this many times.
However this would presumably be very inefficient. Besides, we should
ideally be optimizing
globally or at least using regions larger than a single sample.
Another issue is that optimization
procedure may change the deltas to minimize the heuristics, instead
of distributing the residual in
the way that minimizes the heuristics' cost.
These all seem like reasonable questions, but to me, ultimately boil
down to "what is the best way to construct an estimator for this
problem?". I am not an estimation theorist, but I suggest approaching
it
experimentally: don't worry about efficiency yet, code up some
approaches using standard tools and see whether you can get *anything*
to work.
Regarding global vs local estimation:
This boils down to how much of the input signal to use to calculate
the
residual, which components of the estimation vector to adjust, and how
to weight them.
Given that humans need to breath, I think you don't need to optimise
globally. You could consider a sliding window of "active" pulses.
The maximal temporal extent you would need to consider must comprise a
segment where at least two pulses overlap at all times. If you can
find
gaps you can segment the input.
The minimal temporal extent must be at least as long as a pulse
duration
(i.e. take into account all available information about that pulse).
Glottal pulses are causal impulse responses with finite temporal
extent.
You should be able to derive an upper bound on their duration, either
a
static upper bound based on what we know about vocal tract resonance,
or
an adaptive bound based on your pulse spectra estimates.
The estimator should, for any time segment, consider all pulses that
make a non-zero contribution to the signal (possibly weighted). So you
might want to estimate at least a few overlapping pulses
simultaneously.
This could be done as a moving-horizon estimate where you estimate
pulse
parameters sequentially: i.e. once the window moves past a pulse
onset,
that pulses estimate is frozen, and you could subtract its time domain
representation from the estimator's input signal. Maybe you could
estimate one pulse at a time and assume all previous pulse estimates
are
perfect. These kind of considerations are standard in moving-horizon
estimation.
Ross.
On 5/08/2026 5:14 am, QueueSevenM wrote:
On 2026-08-04 08: 53, robert bristow-johnson wrote: Maybe you should
post this in the Signal Processing Stack Exchange or some place where
we
can read the LaTeX math. Or render it into a .pdf file and post a
link
to it? -- r b-j . _ . _ . _ .
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
On 2026-08-04 08:53, robert bristow-johnson wrote:
Maybe you should post this in the Signal Processing Stack Exchange
or
some place where we can read the LaTeX math. Or render it into a
.pdf
file and post a link to it? -- r b-j . _ . _ . _ . _ rbj@ 
audioimagination. com "Imagination is more important
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
Maybe you should post this in the Signal Processing Stack Exchange
or som
e place where we can read the LaTeX math.
Or render it into a .pdf file and post a link to it?
--
r b-j . _ . _ . _ . _ [email protected]
"Imagination is more important than knowledge."
.
.
.
> Or render it into a .pdf file and post a link to it?
That's a good idea. I've attached a pdf version.
> Maybe you should post this in the Signal Processing Stack Exchange
or
some place where we can read the LaTeX math.
It's not really a question, so I don't think they'd accept it. Maybe
you
could say just the part optimization could be made into a question,
but
I think it would too open-ended. I believe Stack Exchange requires
questions to not be open-ended.
Hello Ross,
I believe your understanding is mostly correct. But I will clarify
something
in case it didn't come through. A well-known property of the voice is
that
of shape-invariance. That is, that the properties of each voice pulse
are
roughly the same regardless of the pitch. Importantly for this, one of
those
properties is duration. In this theoretical model, the voice pulses
are
assumed to be infinite duration impulses. Of course, in reality, the
energy
decays rapidly so most of it can be assumed to be concentrated within
a
small time range.
In the proposed implementation, the windows used for the
reconstruction
process are actually quite large. So most of the window would actually
have
almost no energy, and the main voice pulse only makes a small portion
of the
window. The window size L is always constant, so a higher pitch means
that
the amount of voice pulses that can be overlapping also increases. I
referred to that maximum as M. Anyway, most of this overlapping are
actually
very low energy contributions.
I should also add that the way I have proposed the technique, it is
not
really a new processing algorithm. Rather it is basically just a step
that
can be added on top of the WBHSM algorithm to refine its existing
estimation.
With regards to local vs. global optimization, I should clarify I was
actually not referring to time directly. The limited window size
already
limits the amount of overlapping voice pulses to M. Each row of the
matrix
corresponds to up to M different local samples within M different
voice
pulses that all correspond to the same input sample. Each local sample
of
each voice pulse uniquely corresponds to one input signal sample (but
not
the other way around). What I actually meant with the local vs. global
optimization was regards to the heuristics. While the variables in
each row
are unique, they also affect the behavior for the optimization of
other
rows. This is a big problem if we are optimizing each row separately.
For
example, consider a heuristic which desires a smooth time-domain
signal for
each voice pulse (i.e. minimizes the total variation). This heuristic
would
be significantly hampered by this problem. For example, there were
several
adjacent local samples in a voice pulse windows that had high
variation, and
there was also residual such that adding it would make this variation
much
lower. However, this may not end out being optimized by the algorithm
because each of these local samples in the voice pulse would
correspond to
separate rows, and just adding the residual to one individual value
may not
decrease that heuristic's cost.
The estimator should, for any time segment, consider all pulses that
make a
non-zero contribution to the signal (possibly weighted). So you might
want
to estimate at least a few overlapping pulses simultaneously. This
could be
done as a moving-horizon estimate where you estimate pulse parameters
sequentially: i.e. once the window moves past a pulse onset, that
pulses
estimate is frozen, and you could subtract its time domain
representation
from the estimator's input signal. Maybe you could estimate one pulse
at a
time and assume all previous pulse estimates are perfect. These kind
of
considerations are standard in moving-horizon estimation.
I have actually considered this idea already. In fact, this idea was
actually the precursor to my present idea. There is a massive problem
with
though that makes unviable that I realized during testing. The problem
is
that we only subtract the voice pulses from one side, and not the
other.
Since other voice pulses still exist on the right side, our window is
still
limited to a single period assuming we doing this based on the
wide-band
harmonic method. However, since we subtracted voice pulses on the left
side,
the value there is exactly zero, but is not on the other side. Thus,
the
signal is no longer periodic and the spectrum is distorted
significantly.
After this realization, I spent a lot of time thinking and eventually
came
up with my current idea.
Cheers.