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

  1. 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.
  2. 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, 1200log⁡2(f/ftarget)1200\log_2(f/f_{\text{target}}), and average the absolute values.
  3. HNR. On a three-second sustained /a/ at a comfortable middle pitch, read the harmonics-to-noise ratio for the stable middle part.
  4. 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 wide

The 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

Boersma, Paul, and David Weenink. 2026. Praat: Doing Phonetics by Computer. Computer program, https://www.praat.org/.
Lakens, Daniël. 2017. “Equivalence Tests: A Practical Primer for t Tests, Correlations, and Meta-Analyses.” Social Psychological and Personality Science 8 (4): 355–62.
Nosek, Brian A., Charles R. Ebersole, Alexander C. DeHaven, and David T. Mellor. 2018. “The Preregistration Revolution.” Proceedings of the National Academy of Sciences 115 (11): 2600–2606.

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).