5D Library › The Biomechanics of Phonation and Attentional Shift · 中文
Chapter 8 Practice: An Acoustic Assessment and a Pre-registered Trial
Part 1 A four-step acoustic assessment
The free program Praat (Boersma and Weenink 2026) measures everything this assessment needs. Record in a quiet room, with the same microphone at the same distance (about 30 cm) each time, as a WAV file at 44.1 kHz.
Note
Warm up gently first. Keep every task at a comfortable loudness and stop if anything hurts. The assessment is a teaching tool, not a clinical examination; any persistent hoarseness belongs with a doctor (see the Preface).
The four steps
- Five target notes. The student sings five sustained notes on /a/ from a reference tone (for example C4 to G4 for a lower voice, an octave higher for a higher voice), each for about two seconds.
- Pitch error in cents. In Praat, select the stable middle second of each note and read the median pitch. Convert each to cents from its target, , and average the absolute values.
- HNR. On a three-second sustained /a/ at a comfortable middle pitch, read the harmonics-to-noise ratio for the stable middle part.
- Formants. On the same vowel, read F1 and F2 (and, for trained classical singers, check the spectrum near 3 kHz).
Calculation
An invented example of one student before and after a lesson: cents errors per note, mean absolute and mean signed error, and the HNR change.
import math
def cents(f, ref):
return 1200 * math.log2(f / ref)
# Step 2 of the assessment: the median F0 of the stable middle of each sung note,
# read from Praat, against the target note. Invented example of one student.
targets = {"C4": 261.63, "D4": 293.66, "E4": 329.63, "F4": 349.23, "G4": 392.00}
before = {"C4": 258.9, "D4": 289.0, "E4": 321.8, "F4": 343.0, "G4": 381.5}
after = {"C4": 260.8, "D4": 292.1, "E4": 327.0, "F4": 347.5, "G4": 388.6}
for label, sung in (("before", before), ("after", after)):
errs = [cents(sung[n], targets[n]) for n in targets]
mae = sum(abs(e) for e in errs) / len(errs)
print(f"{label:6s} " + " ".join(f"{n}:{e:+5.1f}" for n, e in zip(targets, errs))
+ f" | mean absolute error {mae:4.1f} cents, mean signed {sum(errs) / len(errs):+5.1f}")
# Steps 3–4: HNR and F1/F2 of a sustained /a/ entered from Praat
hnr = {"before": 14.2, "after": 17.9}
print(f"HNR {hnr['before']} → {hnr['after']} dB ({hnr['after'] - hnr['before']:+.1f} dB)")
# before C4:-18.2 D4:-27.7 E4:-41.6 F4:-31.2 G4:-47.0 | mean absolute error 33.1 cents, mean signed -33.1
# after C4: -5.5 D4: -9.2 E4:-13.9 F4: -8.6 G4:-15.1 | mean absolute error 10.5 cents, mean signed -10.5
# HNR 14.2 → 17.9 dB (+3.7 dB)In this invented example, the student was flat on every note, increasingly so as the notes rose, and the error fell from 33 to 11 cents. The mean signed error is worth keeping alongside the absolute error: a consistent flat bias calls for different work from random scatter.
Part 2 A pre-registered randomised trial
Question
In adult beginners, does five minutes of singing with a tactile anchor and an external auditory-spatial focus reduce pitch error more than five minutes with an internal-focus instruction directed to the throat and breathing muscles?
Design
| Element | Specification |
|---|---|
| Participants | Adults aged 18–60 with no singing training beyond school, normal hearing by self-report and no current voice problem; exclusions: hoarseness at screening, voice disorder under treatment, recent throat surgery |
| Design | Two-arm parallel randomised trial; allocation 1:1 by computer, concealed until the participant has completed the baseline recording |
| Baseline | The four-step assessment of Part 1 |
| A: internal focus | Five minutes of guided practice of the same five notes, with the instruction to “pay close attention to your throat and the muscles you breathe with, and control them to hit each note” |
| B: anchor + external focus | Five minutes of the same practice while lightly holding a smooth stone or the edge of a table (participant’s choice; no person-to-person contact), with the instruction to “send each note to the clock on the far wall and listen to it arriving there” |
| Kept equal | Same teacher script length, number of repetitions, reference tones, room and microphone; the practising instructor reads from a script and gives no other feedback |
| Primary outcome | Mean absolute pitch error over the five notes (cents), measured immediately after practice, with baseline as covariate |
| Secondary outcomes | HNR of the sustained vowel; mean signed error; participants’ rating of effort (0–10) |
| Blinding | Recordings are coded; the person extracting pitch and HNR in Praat does not know the allocation |
The touch in arm B is to an object, not to the instructor, so that the trial does not depend on interpersonal contact and can be run identically everywhere.
Sample size
Calculation
import math
from statistics import NormalDist
z = NormalDist().inv_cdf
def per_group_ancova(d, rho, alpha=0.05, power=0.90):
"""Two-arm trial analysed with the baseline as covariate: the variance shrinks by (1 − ρ²)."""
za, zb = z(1 - alpha / 2), z(power)
return math.ceil(2 * (za + zb) ** 2 * (1 - rho ** 2) / d ** 2 + za ** 2 / 4)
# Outcome: mean absolute pitch error (cents) over five target notes after 5 minutes.
SESOI, SD = 10.0, 20.0 # smallest difference worth acting on; between-person SD
d = SESOI / SD
for rho in (0.5, 0.7):
n = per_group_ancova(d, rho)
print(f"baseline–outcome correlation {rho}: {n} per group, {2 * n} in all "
f"(recruit {math.ceil(2 * n / 0.9)} for 10 % drop-out)")
# baseline–outcome correlation 0.5: 65 per group, 130 in all (recruit 145 for 10 % drop-out)
# baseline–outcome correlation 0.7: 44 per group, 88 in all (recruit 98 for 10 % drop-out)The protocol plans for the more conservative case: 65 completers per group, 145 recruited. The between-person SD of 20 cents is an assumption to be checked in a 10-person pilot, which is used only for that purpose and for checking the procedure.
Analysis and decision rule
The primary analysis is an analysis of covariance of the post-practice error with baseline error as covariate, giving the adjusted difference between arms and its 95 % confidence interval. The result will be read by the following rule, written before any data exist, in the spirit of equivalence testing (Lakens 2017).
Calculation
SESOI = 10.0 # cents of mean absolute pitch error
def verdict(diff, lo, hi):
"""diff = (tactile anchor + external focus) minus (internal focus), adjusted for
baseline, with its 95 % confidence interval. Negative = smaller pitch error.
Fixed before any data are seen."""
if hi <= -SESOI:
return "external package clearly better (by at least 10 cents)"
if hi < 0:
return "external package better; size not shown to reach 10 cents"
if lo > 0:
return "internal focus better"
if lo >= -SESOI and hi <= SESOI:
return "no difference worth acting on (within ±10 cents)"
return "unclear: the interval is too wide"
for d, lo, hi in ((-15, -21, -11), (-6, -11, -1), (-1, -7, 5), (-5, -16, 6)):
print(f"{d:+4d} ({lo:+4d} to {hi:+4d}) cents: {verdict(d, lo, hi)}")
# -15 ( -21 to -11) cents: external package clearly better (by at least 10 cents)
# -6 ( -11 to -1) cents: external package better; size not shown to reach 10 cents
# -1 ( -7 to +5) cents: no difference worth acting on (within ±10 cents)
# -5 ( -16 to +6) cents: unclear: the interval is too wideThe examples are invented, to show in advance how each kind of result will be reported. An interval within ±10 cents will be reported as “no difference worth acting on”, not “no effect”; an interval that crosses a boundary will be reported as unclear.
What this trial can and cannot show
Arm B combines two things, the touch anchor and the external focus, because that is how the cue is taught. A positive result would support the combined cue, not either component; a follow-up trial with four arms (touch or not, by external or internal focus) would be needed to separate them. Five minutes of practice also tests an immediate effect on performance, not learning; a retention test a day later would be the next step.
Ethics and conflicts of interest
Both arms are short, gentle singing tasks. Participants give informed consent and may stop at any time. The protocol will be reviewed by an independent research ethics committee and publicly registered before recruitment, following the principles of pre-registration (Nosek et al. 2018).
Disclosure
The author teaches singing at vocal.guru and singingasia.com, where he uses a version of the touch-and-external-focus cue tested in arm B, and so has a direct commercial interest in a favourable result. To limit the influence of that interest: the protocol, analysis code and decision rule are published before recruitment; the instructors who run the sessions, the people who extract the measurements and the analyst are independent of the author’s businesses; and the results, anonymised data and code will be published whatever they show.
References
Fan, Y. (2026). The Biomechanics of Phonation and Attentional Shift: Myoelastic-Aerodynamic Theory, the Singer's Formant, Auditory-Motor Feedback and External Focus of Attention [发声的生物力学与注意力转移] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23719625 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).