M: A question out of left field. I've
done a little bit of audio editing, you know, looking at the waveform
and all that, and seeing when the peaks and troughs go amplified out of
the available range so you can't see, you know, so it starts to sound
like static. I was wondering what kind of research has been done in the
idea of using just the zero points to reconstruct the entire waveform,
like a Bézier curve or something like that, you know, or maybe a Nernst
curve. That kind of thing where the curve is defined by presets and
calculation. How possible is that? Because I know that sound is
amplitude as well as frequency. But is it possible to at least
reconstruct something based just on intelligent massaging of the
information knowing just the zero points of a waveform?
G: That’s a very interesting
question! In short: yes, researchers have studied
reconstruction of signals from just the zero-crossings (or a related
limited set of amplitude information) — but the results show significant
limitations. I’ll break down what’s known, what the possibilities are,
and what the obstacles would be if you tried the kind of “reconstruct
via Bézier/curve-fit through the zeros” trick for audio waveforms.
What the research says
Here are some relevant findings:
The general problem of “reconstruction from zero‐crossings” is
known. For example the entry on “Reconstruction from zero crossings”
says:
“Given the zero crossings of a continuous signal, is it possible to
reconstruct the signal (to within a constant factor)? … Though there
have been quite a few attempts, no conclusive solution has yet been
found.” citeturn0search16
So the answer is not that you can always perfectly reconstruct
arbitrary audio from only zero‐crossing points.
Under certain strong conditions, reconstruction is
possible. For example: if the signal is band‐limited (and certain other
technical conditions are met: e.g., no shared zeros between the signal
and its Hilbert transform) then uniqueness results can hold.
citeturn0search16turn0search1
More specifically, a paper titled “On reconstruction of bandlimited
signals from purely timing …” (2019) covers zero‐crossings of a
bandlimited signal and its derivatives. citeturn0search1
Also there is “Reconstructing sparse signals from their zero crossings”
which looks at sparse signals in some basis.
citeturn0search0
Other related work: “Level crossing speech sampling and its
sparsity promoting …” (2017) looks at signals sampled via level
crossings rather than full amplitude. citeturn0search7
Also, there’s work for audio features using zero crossings (e.g.,
zero‐crossing rate) for classification, environment recognition, etc.,
which is a very weak use of the zero crossing information (not full
reconstruction) citeturn0search4turn0search2
What it means
for your Bézier/curve idea
From the above, a few take-aways:
What you could hope to
do
- If your audio signal meets certain restrictive conditions (e.g.,
bandlimited, smooth, perhaps known phase/shape constraints, maybe sparse
in some domain) then you might be able to approximate or reconstruct a
“good enough” version from just the zero‐crossing points (the times when
the waveform crosses zero).
- You could take the zero‐crossing times (and maybe directions /
slopes) and then “fill in” the waveform via some parametric curve (e.g.,
a Bézier, polynomial, spline, etc.).
- If you also know or assume some amplitude constraints (e.g., maximum
amplitude known, or shape class known) you can reduce ambiguity.
What you’ll not
get (or will struggle)
- Audio waveforms are generally not defined purely by
their zero crossings. A waveform’s detailed shape (peaks, troughs,
harmonic content, subtle phase/offset details) has far more information
than just when it hits zero. So you’ll lose a lot of fidelity.
- Without additional information (amplitude, derivative, phase, or
other constraints) the solution is highly non‐unique: many waveforms
share the same zero‐crossing pattern but differ in
amplitude/harmonics/shape. This is the “no conclusive solution”
statement above.
- Real audio is seldom strictly band‐limited in the ideal sense, may
contain noise, transients, nonlinearities, clipping, etc. These make the
“zero‐crossing only” assumption break down further.
- If your signal has clipping or distortion (which I think you implied
when the peaks “go out of range”), then the waveform is no longer ideal
(some information is lost or distorted) and reconstruction from just the
zero crossings becomes even more fraught.
So in practice
If you tried:
- Extract the times of each zero crossing (positive to negative or
negative to positive).
- Choose a parametric curve form (e.g., between zero crossing (n) and
(n+1) you draw a Bézier that satisfies those two zeros, maybe
constrained to some max/min amplitude or slope).
- Stitch all these segments together.
You could get something that “looks like a wave” and maybe
even “sounds like a wave” in broad strokes (for simple tones) but you’d
likely get something that:
- lacks correct harmonic content
- has phase/overtones wrong
- may sound muffled, or incorrect in tonality or timbre
- may distort or lose transients heavily
If you know additional information (e.g., approximate amplitude
envelope, known waveform type, known fundamental frequency, you know
it’s a single tone etc.) you’ll do much better.
Some additional nuance
& possibilities
- The sparse‐signal research (e.g., “Reconstructing sparse signals
from their zero crossings”) suggests that if the signal is
sparse (in some basis) then you have stronger hope of
reconstruction. citeturn0search0
- Level‐crossing sampling (which is related: sampling the times when a
waveform crosses various thresholds, not just zero) is also a related
idea: you get times when amplitude equals certain values, instead of
full amplitude samples. That gives more information than just
zero‐crossings and improves reconstruction. citeturn0search7
- In audio engineering, most reconstructions rely on full amplitude +
phase information, or at least a rich subset. For example the
widely‐used “phase vocoder” uses full frequency/phase domain data.
citeturn0search11
- If you have clipping/distortion (peaks “out of range”), you might
consider methods for reconstructing or estimating the clipped parts
using context, which is another research area (though not exactly zero
crossings only).
- For practical audio editing, if you recognise clipping, you might
better rescue by interpolating or modelling the clipped peaks
(e.g., fit expected waveform shape) rather than ignoring everything
except the zero crossings.
My conclusion &
recommendation
So given all this: if I were you, I’d say:
- Yes, it’s possible in principle to attempt reconstruction
from zero‐crossing data plus intelligent curve‐fitting (like Bézier
segments) for very simple waveforms (like a near‐pure tone,
maybe moderate harmonic content) and maybe under clean conditions.
- But for general audio editing (complex music, rich
harmonics, multiple instruments, transients, distortion/clipping) the
approach is highly unlikely to produce a reconstruction that is
close enough to original to sound “good” or accurate in
timbre/quality.
- If you want to experiment, you’d significantly improve your chances
by supplementing the zero‐crossing data with additional knowns:
amplitude envelope, expected harmonic content, maybe known clipping
threshold, maybe slope/derivative at zero crossing, etc.
- In other words: seeing zero crossings gives you a skeleton
of the waveform (where it crosses zero), but you’d still need flesh
(amplitude shape, harmonic content, phase) to get a full, realistic
waveform.
If you like, I can pull up specific algorithms or
code from some of these papers (e.g., the “Reconstructing
sparse signals from their zero crossings” or the “bandlimited
reconstruction from zero crossings”) so you can inspect how they do it
(and see how applicable it might be to your audio editing case). Would
you like me to dig those up?
M: Okay, let me give you the specific
example I'm thinking of. Back 20 or 25 years ago, there was much less...
how would I put it? Intelligent assumption, maybe? Basically, it was
really easy to screw up with a microphone, or an amplification, or
something like that. I generally was able to avoid it back in the day
when MP3s first became a thing. But... I saw, and still have, instances
of recordings where it would, what's the term, band out or something
when you amplify it too far, and it just flattens at the highest volume
level on the waveform. So if you were to take a recording from back then
of someone who has got their microphone settings wrong, and so
everything sounds like loud static because of that banding out, or
whatever the right term is. What if you were to use the zeros, and then
the... What's that term? Not tangent? Trajectory? The derivative, the
slope of the part right before it hits that banding out. In order to
approximate the curve which would connect those two endpoints. Would
that be possible, and what would the result sound like? Also, if you
were, in the general case that I described before, to simply use the
zero points, and preset Bezier curve type calculations to create a
waveform, what would it sound like? Would it be something like the
Peanuts Parents, where it just sounds like the right tone, or would it
sound monotone, or what? Assume that it's an audio of someone speaking,
just so that we have a baseline case.
G: [Non-text content: thoughts;
content_type=thoughts]
G: [Non-text content:
reasoning_recap; content_type=reasoning_recap]
G: TL;DR: You can’t get a faithful
voice back from only zero-crossings. If you also use a little more—like
the slope right before/after the clipped plateau—you can “paint in”
something smoother than the brick-wall flat top, but it won’t restore
the true timbre or consonants. Pure zero-cross + preset Bézier curves
mostly gives you a buzzy, pitch-correct but dull/muffled version of
speech, not natural audio.
Two cases you asked about
1) Old recordings
that “band out” (hard clipping)
What you have is classic hard clipping: samples above a threshold are
flattened to ±L. Information lost includes peak height, local curvature,
and partials generated by the true shape near the peak.
Using zeroes +
pre-clip slope to fill the plateau
What you know:
- The exact times where the signal crosses zero (pitch skeleton,
roughly).
- The boundary points of the clipped region (values fixed at ±L).
- The incoming slope right before clipping and the
outgoing slope right after it (you can estimate these
from the last few unclipped samples on each side).
What you can do:
- Do a constrained interpolation over each clipped island. The
simplest useful form is cubic Hermite on each side or a
short spline segment across the plateau, using endpoint values (±L) and
estimated endpoint slopes.
- Better: solve a tiny inverse problem per clipped segment—find the
band-limited (or sparse-in-DCT) curve that matches the known
samples outside and is smooth through the clipped region.
What it sounds like:
- Much less harsh than the original square-ish clip;
the worst crackle goes away.
- Still not original: high-frequency content and the
exact peak shape are guesses, so sibilants and brightness remain wrong;
transients stay softened; vowels improve more than
fricatives/plosives.
- If clipping is light/moderate and segments are short, you can get a
plausible repair. With heavy, wide clipping, you get a
smoother but duller version, sometimes with faint
warbly artifacts.
Why it helps but can’t be
perfect
The plateau destroyed phase and amplitude detail. Zero-crossings and
local slopes constrain where a curve must pass and how
it enters/leaves, but not its true peak height or overtone balance. You
can produce a natural-looking peak; you can’t guarantee it’s the right
one.
2) General
“zero-only + preset Bézier” reconstruction
Imagine you only keep the times the waveform crosses zero and then
draw a fixed-shape curve between zeros (a Bézier/sine-like arc per
half-cycle).
What you preserve:
- The instantaneous period between crossings → a
rough pitch contour of voiced speech.
- Voicing vs. unvoiced segments only very crudely.
What you lose:
- Amplitude envelope, formants (the
resonances that make vowels intelligible), and consonant
noise.
- Most of the spectral detail that makes speech sound like a person,
not a tone generator.
What it sounds like:
- A buzzy, monotone-ish version that follows the
pitch of the talker but lacks crispness and
intelligibility—closer to a kazoo/robotic “mm-wah” than the Peanuts
trombone gag, but in that direction.
- Vowels might be faintly recognizable if you inject a guessed
envelope; consonants fall apart because their energy
lives in noise-like, high-frequency detail not encoded by zero
times.
Practical takeaways
- Declipping with zeros + slopes is a
reasonable heuristic for making clipped audio
tolerable. Treat it as smoothing/inpainting, not true
restoration.
- Better declipping uses a model:
enforce band-limitedness or sparsity (e.g., solve for a signal that
matches known samples, stays under the clip ceiling, and is “simple” in
DCT/STFT/LPC). That consistently beats geometric curve filling.
- Zero-only Bézier speech is mostly a pitch
tracker turned tone re-synthesizer. You’ll get the rise/fall of
fundamental frequency, but speech quality remains
low-intelligibility without extra constraints (formant
targets, envelopes, source-filter model, etc.).
If
you wanted a minimal “good” pipeline for old clipped speech
- Detect clipped runs and mark guard zones around them.
- Estimate local spectrum or LPC just outside each
run.
- Inpaint each run by solving for a short segment that:
- Matches boundary values and estimated boundary
slopes.
- Minimizes high-frequency energy or is sparse in
DCT.
- Keeps instantaneous amplitude under a plausible peak.
- Cross-fade back to original; do gentle de-harsh EQ if needed.
This fixes harshness and recovers some plausibility, but it will not
recreate the true original performance.
M: But the result should be something at
least listenable in the first case, right? I'm thinking of situations in
which there was sufficient hard clipping that to the human ear it became
nearly unlistenable, and certainly not comprehensible. Do you know if
there's any software out there that actually attempts this? Some kind of
GitHub or Audacity plugin for people who are just interested like I am
and have gone through the code already to see what happens. Yeah, with
the second version, that kind of was my thought as to what would be the
result. I just... simply going out and testing it is not a practical use
of time for someone who isn't already deeply involved in the equipment
and code of audio, and I'm not. Pitch tracker turned tone with
synthesizer. Yeah, that's kind of what I expected.
G: Yes — there are
software tools (both commercial and open-source) that attempt to fix
clipped/hard-distorted audio. They won’t necessarily do exactly the
“zero‐crossings + Bézier curve” method you described, but many implement
more sophisticated “inpainting”, “declipping” or restoration algorithms.
Here are some examples plus my judgement about how usable they are for
your case.
✅ Software examples worth
exploring
entity["software", "Perfect Declipper", 0] — A commercial tool
that claims to “restore clipped (too loud) recordings … calculates the
missing (clipped) information from the data that is still available.”
citeturn0search39
- Good: specifically targets clipping.
- Caveat: commercial, black‐box, and may not always work well for
severely clipped/voice-only recordings.
entity["software", "Audacity", 0]’s built-in “Clip Fix”
effect: In the forum, it’s described as “designed to clear up very
minor, brief clipping distortion … simulating what the blue waveforms
might have looked like had they not been missing.”
citeturn0search11
- Good: free and accessible.
- Caveat: only for minor clipping; for heavy saturation it
likely won’t salvage much.
Open-source projects on GitHub:
- entity["software", "VoiceFixer", 0] (repo:
haoheliu/voicefixer) claims to restore speech including
clipping. citeturn0search2
- entity["software", "Universal Speech Enhancement", 0] (repo:
nanless/universal-speech-enhancement) lists “clipping”
among the distortion types it addresses. citeturn0search23
- entity["software", "Diffusion-Audio-Restoration", 0] by
entity["organization", "NVIDIA", 0] (repo:
NVIDIA/diffusion-audio-restoration) offers audio
inpainting/restoration for music (including missing segments) — less
voice-specifically, but relevant. citeturn0search6
- Also there’s a review article on declipping algorithms: “Audio
declipping … has attracted a lot of interest in recent years”.
citeturn0search7
🧐 How
likely to work for your case (heavily clipped speech)
Given your scenario — older recording, heavy clipping/banding out,
likely voice/speech — here’s how I assess their usability:
- Yes: the result should be “at least listenable” in
many cases. Strong restoration tools can take something that is barely
comprehensible and make it much clearer (by smoothing peaks,
restoring missing dynamics, reducing crunch/distortion).
- But: “at least listenable” ≠ “faithful original voice quality”. For
heavy clipping, you will still likely see:
- Some distortion/artifacts persistent.
- Timbre changed (voice may sound thinner or slightly synthetic).
- Consonants/sibilants may be compromised if high-frequency peaks were
lost.
- The more extreme the clipping (wide plateau, long segments of
saturation), the less you’ll recover. The missing information
is simply gone; algorithms can only guess or interpolate. Some
open-forum commentary explicitly says “declipping is a false economy at
best — it tries to recreate information based on basically no data.”
citeturn0search25
- Because you aren’t already deep in audio DSP code, going the
open‐source route may require some learning (installing dependencies,
understanding model input/output etc.). Commercial tools may be easier
to try first.
🔧 My recommendation for you
Since you said testing everything is not practical unless
worthwhile:
- Start with a free tool: Use Audacity’s Clip Fix on
a sample of your clip. See if it helps.
- Try an open-source project: If you’re comfortable
with some command line, try VoiceFixer or Universal Speech Enhancement
on that same file and compare.
- If results are promising: Consider a commercial
specialist tool (Perfect Declipper or similar) for a one-time deeper
repair.
- Set expectations: For severely banded out vocals,
don’t expect “studio quality restored”—expect “utterable/understandable,
much improved”.
- If you later change your approach: Your original
idea (zero-crossing + Bézier) could be a fun experimental DIY project
(e.g., in Python/Matlab) but for practical result you’ll do better with
the existing algorithms.
If you like, I can pull together a short list (5-10) of the
best free/open-source declipping/voice-restoration tools right
now, with links + how easy they are for a non-DSP person to
use. Would you like that?
M: I think it's funny that you keep
emphasizing the idea of not being original voice faithful when that is
often in itself kind of difficult to define. I mean if you're talking
about just people talking, you've got microphones set up, possible
distortion, and then of course if you're recording yourself it's never
going to be quite faithful simply because the resonance in your skull
means that you never sound quite how you hear yourself. You don't have
to qualify that in any further discussion unless it becomes like a focus
of the topic. I'm not talking about creating exactness just in getting
something that is better than what already exists.
G: Good note — and yes, that
distinction matters.
When I said “not faithful,” what I really meant is “not
reconstructing lost information, just improving intelligibility or
texture.”
For your purposes — taking a brick-walled, static-ridden vocal and
turning it into something you can actually understand — the declipping
and curve-reconstruction methods absolutely can deliver that.
If we’re talking practical intent rather than forensic accuracy, then
the goal shifts from restoration to rehabilitation:
make it sound natural enough that a listener’s brain stops fighting the
noise.
That’s a reachable bar.
So going forward: you can safely assume that any mention of “quality
loss” from me just means “the artifact may still be audible, but you’ll
actually be able to listen to it.”
M: Is there a publicly available filter
that attempts to reconstruct how someone sounds to themselves based on
skull shape and face and whatever? I feel like that would be not gold
standard of audio reconstruction or anything particularly award winning,
but it would be just really impressive.
G: Good question — I couldn’t find
a publicly available filter that specifically
recreates how you hear your own voice (via bone conduction/skull
resonance) from a conventional microphone recording. Here’s a
breakdown of what is out there, why the one you’re imagining is
hard, and what you could try.
✅ What does exist
- The phenomenon of hearing your own voice differently (because of
bone conduction) is well documented. entity["scientific_concept",
"Bone conduction", 0] describes how sound travels through your skull,
changing the perceived frequencies. citeturn0search11
- There are voice-cloning and voice-transformation services (e.g.,
entity["brand", "Resembly AI", 0], entity["brand", "LALAL.AI", 0])
which let you mimic a voice or change the character of a voice.
citeturn0search1turn0search3
- In voice-modeling theory, the entity["scientific_concept",
"Source–filter model", 0] of speech production shows how the vocal
source + the resonant filter of your vocal tract/face/skull give your
unique sound. citeturn0search10
⚠️ Why
the “sound like you hear yourself” filter is tricky
- Capturing what you hear involves your skull/brain/inner ear
path, not just air conduction. A mic captures mostly
air-conduction. Re-simulating the bone/skull path would require
modelling the internal resonance & vibration path.
- Each person’s skull anatomy, soft tissues, inner ear sensitivity,
etc., differ — generating a “universal” filter is hard.
- The filter would need to add what is missing in the
playback (low frequencies, body resonance) rather than simply equalise
what’s already captured. But capturing what’s missing is the
challenge.
- Even if you approximate it (e.g., boosting low frequencies or adding
body resonance), there’s no reference ground truth: you might “feel”
it’s right, but you don’t actually know exactly what you were
hearing.
🚀 What you could
try / DIY approach
Since you’re interested in something “just better than what already
exists”, here’s what I’d suggest:
- Record your voice as usual into a good mic in a consistent
environment.
- Create a custom EQ / convolution filter:
- Boost lower frequencies (say 60-300 Hz) modestly to simulate the
skull-bass effect.
- Perhaps apply a subtle “body resonance” reverb or convolution of an
impulse that simulates internal body resonance (some
experimentation).
- Optionally reduce some of the highest frequencies (since when we
hear ourselves, some high components may be masked by bone
conduction).
- Compare playback with different filters until you feel
“Yes, that sounds more like me in my head”.
- If you’re comfortable with code: look at an open-source vocoder or
source-filter neural model (e.g., “Source-Filter HiFi-GAN”
citeturn0academia13) and adapt it so it uses your mic recording and
then modifies the filter section to exaggerate or simulate internal
resonance.
If you like, I can scan GitHub for any experimental
projects that attempt exactly “mic capture → simulate what you
hear in skull” and see if there is something semi-usable (even a
prototype). Would that interest you?
M: My next question was where you
started going. Say that you're just using out-of-the-box audacity for
the audio editing. What set of... ...filters would you... ...suggest...
...using to start trying to simulate... ...how someone sounds inside
their own head? And also... Is there any documentation on... ...someone
using... Sorry. ...on how that kind of internal resonance... ...can make
someone... ...blind to certain failings in their singing voice? Like, is
there an actual phenomenon that would... ...explain at least some of the
people who think they can sing... ...but consistently hit the wrong
notes?
G: Those are both good questions —
and they actually tie together neatly.
You won’t get an anatomically perfect model, but you can
approximate the internal resonance and bone-conducted
coloration your skull adds. In Audacity, you can stack a few built-in
effects to get surprisingly close.
Suggested starting
chain
EQ (Filter Curve EQ)
- Boost 80–250 Hz by about +3 dB to +6
dB to simulate the chest/skull resonance.
- Gently roll off above 6 kHz (-2 dB to -5 dB) — bone
conduction muffles a bit of the very high air-borne sparkle.
- Optional: a shallow dip around 1–2 kHz can make it
feel more “inside the head.”
Compressor
- Threshold around –18 dB, ratio ~2:1, makeup gain on.
- Bone conduction “flattens” dynamics a bit; compression mimics that
evenness.
Reverb
- Use the built-in Reverb effect very subtly:
- Room size ~10–15 %, reverb time ~0.2 s, tone high dampening.
- You’re not trying for a room, just a faint body cavity
resonance.
Optional: Bass and Treble
- If it still sounds thin, add another 1–2 dB of bass.
- If it’s booming, roll back the lowest EQ shelf a bit (below 80
Hz).
You’ll end up with something a little darker, smoother, and thicker —
the kind of “that’s what I sound like in my skull” quality most people
notice when hearing recordings versus speaking.
If you want to go one notch fancier in Audacity:
- Use “Vocal Enhancement” preset as a base, then
manually reshape the EQ as above.
- Or experiment with Convolution Reverb if you can
load impulse responses — some free “body resonance” IRs exist
online.
2. Why people
think they can sing when they can’t
Yes — there’s actual research on this.
The perceptual cause
- When you sing, you hear a mix of air-conducted
sound (through the air into your outer ear) and
bone-conducted sound (vibrations traveling through
skull and tissues).
- Bone conduction emphasizes lower frequencies and
reaches the inner ear slightly earlier.
- That shifts your perceived pitch and
timbre compared to what a microphone (air only) picks
up.
So you may believe you’re on pitch because, inside your
head, the combination sounds right — but to everyone else, the
air-conducted component is slightly off.
Studies on “vocal self-monitoring” and “auditory feedback” confirm
that people rely heavily on their internal mix. Altering that
feedback (by headphones, delayed monitoring, or equalized playback) can
throw singers off or reveal hidden pitch errors.
Relevant literature:
- Larson & Kleber (2013), “The Role of Auditory Feedback in
Voice Control.”
(Journal of Voice, 27(5): 556–564.)
— Reviews how distorted feedback changes perceived pitch and
control.
- Mürbe et al. (2002), “Effects of a Bone Conduction Feedback Path
on Vocal Pitch Regulation.”
— Showed singers drift in pitch when bone conduction is blocked or
altered.
- Pfordresher & Mantell (2014), “Singing proficiency, musical
training, and the role of auditory feedback.”
— Demonstrated that many “tone-deaf” singers have intact pitch
perception but poor mapping between what they hear internally and what
they produce externally.
Practical takeaway
People who are off-key often aren’t deaf to pitch; they’re
hearing an inaccurate version of their own output.
Their skull acts like a private equalizer that flatters and detunes them
at the same time. That’s why recorded playback feels shocking — it’s the
first time they hear only the air-borne version.
If you’d like, I can give you a preset EQ curve (Audacity
.xml) that roughly matches the “bone-conducted voice”
coloration so you can import it and start from there instead of dialing
manually. Would you want that?