5D Library › Vocal Biomechanics, Non-Linear Source-Filter Coupling and Auditory-Motor Feedback · 中文

Chapter 8 Practice and a Pre-Registered Trial

Note

The checklist in this chapter is a tool for teaching and self-observation, not a voice examination, and it cannot be used for diagnosis. If hoarseness lasts more than two weeks, or there is pain on phonation, coughing up blood or difficulty breathing, see an ear, nose and throat specialist or a voice clinic first, and a speech-language therapist as the doctor advises (see the Preface). Straw and water-resistance exercises should be done at a comfortable level; stop at once if you feel dizzy or have any pain or discomfort in the throat. The numerical ranges given in the book are set to demonstrate the calculations and are not validated prescriptions.

Part 1 A four-step checklist of voice biomechanics and auditory feedback

This checklist is for a singer (or a teacher with a student) to observe phonation and monitoring habits over a period of time. Each of the four steps corresponds to a model in the earlier chapters, and each compares the singer only with their own earlier records, never with any “norm”.

  1. Ease of onset and hydration (Chapter 1). At low, middle and high pitch, record the sound pressure level of the softest steady /u/ at a fixed distance (for example, 30 cm) and rate the ease of onset (0–10), on different days (for example, a normal day and a day after a long flight).
  2. Straw warm-up (Chapter 2). Note the straw’s length and bore and any water depth, estimate the mouth back pressure, and keep to a few minutes of gentle glides and sustained tones; deeper water is not “more exercise”.
  3. Bright resonance or laryngeal pressing? (Chapters 2–3). At one pitch and loudness, record the habitual way of singing, a “bright resonance” image and a “push hard” image; read the singing power ratio (strongest harmonic at 2–4 kHz relative to the strongest at 0–2 kHz) and H1–H2 (first minus second harmonic), and rate effort on the Borg CR10. Pressing tends to lower H1–H2 and raise effort together.
  4. Monitoring calibration (Chapters 5–6). Sing the same 8 notes with both ears open, one ear lightly blocked, a hand cupped behind one ear, and both ears blocked; compute the mean signed (sharp or flat) and mean absolute error in cents.

Calculation

The checklist applied to a fictional singer. All the numbers are invented, only to demonstrate the arithmetic.

# The four-step checklist applied to an INVENTED singer. Every number is made up to show
# the arithmetic; none is a norm or a diagnosis.
import math

print("Step 1  softest steady /u/ (dB SPL, 30 cm) / ease 0-10: hydrated -> dry day")
for note, (l1, e1, l2, e2) in {"low A3": (52, 8, 53, 8), "mid E4": (55, 7, 55, 7),
                               "high C5": (60, 6, 64, 4)}.items():
    flag = "  <- harder onset when dry" if l2 - l1 >= 3 else ""
    print(f"  {note:7s}  {l1} dB / {e1}   ->   {l2} dB / {e2}{flag}")

print("Step 2  straw: mouth pressure at 0.15 L/s (friction + jet loss + water depth)")
for d_mm, length, depth in ((6.0, 0.14, 0), (4.0, 0.14, 0), (9.0, 0.27, 4)):
    u, r = 0.15e-3, d_mm / 2000
    dp = (8 * 1.85e-5 * length * u / (math.pi * r ** 4)
          + 1.14 * u * u / (2 * (math.pi * r * r) ** 2)) / 98.07 + depth
    ok = "within 1-5 cm H2O" if 1 <= dp <= 5 else "very light" if dp < 1 else "heavy"
    print(f"  {d_mm:.0f} mm x {length * 100:.0f} cm, {depth} cm under water: "
          f"{dp:4.1f} cm H2O -> {ok}")

print("Step 3  same note and loudness: singing power ratio, H1-H2, Borg CR10 effort")
TAKES = (("habitual", -18.0, 6.5, 5), ("'ring' image", -11.0, 5.8, 4),
         ("'push' image", -12.0, -1.5, 8))
for name, spr, h12, effort in TAKES:
    v = ("reference" if spr <= -14 else "brighter, not pressed" if h12 > 3 and effort <= 5
         else "pressed? (low H1-H2, high effort)")
    print(f"  {name:13s} SPR {spr:+5.1f}, H1-H2 {h12:+4.1f} dB, effort {effort} -> {v}")

print("Step 4  pitch error over 8 sung notes (cents): mean signed / mean absolute")
errs = {"open ears": [-14, -9, -18, -6, -12, -20, -8, -15],
        "one ear blocked": [-6, 2, -9, 4, -3, -7, 1, -5],
        "hand cupped at ear": [-4, 3, -6, 5, -2, -5, 2, -3],
        "both ears plugged": [12, 18, 9, 15, 20, 11, 16, 14]}
for name, e in errs.items():
    ms, ma = sum(e) / len(e), sum(abs(x) for x in e) / len(e)
    bias = "flat" if ms < -5 else "sharp" if ms > 5 else "no clear bias"
    print(f"  {name:18s} {ms:+6.1f} / {ma:5.1f}  ({bias})")
print(f"  lowest absolute error: {min(errs, key=lambda k: sum(map(abs, errs[k])))}")
# Step 1  softest steady /u/ (dB SPL, 30 cm) / ease 0-10: hydrated -> dry day
#   low A3   52 dB / 8   ->   53 dB / 8
#   mid E4   55 dB / 7   ->   55 dB / 7
#   high C5  60 dB / 6   ->   64 dB / 4  <- harder onset when dry
# Step 2  straw: mouth pressure at 0.15 L/s (friction + jet loss + water depth)
#   6 mm x 14 cm, 0 cm under water:  0.3 cm H2O -> very light
#   4 mm x 14 cm, 0 cm under water:  1.5 cm H2O -> within 1-5 cm H2O
#   9 mm x 27 cm, 4 cm under water:  4.1 cm H2O -> within 1-5 cm H2O
# Step 3  same note and loudness: singing power ratio, H1-H2, Borg CR10 effort
#   habitual      SPR -18.0, H1-H2 +6.5 dB, effort 5 -> reference
#   'ring' image  SPR -11.0, H1-H2 +5.8 dB, effort 4 -> brighter, not pressed
#   'push' image  SPR -12.0, H1-H2 -1.5 dB, effort 8 -> pressed? (low H1-H2, high effort)
# Step 4  pitch error over 8 sung notes (cents): mean signed / mean absolute
#   open ears           -12.8 /  12.8  (flat)
#   one ear blocked      -2.9 /   4.6  (no clear bias)
#   hand cupped at ear   -1.2 /   3.8  (no clear bias)
#   both ears plugged   +14.4 /  14.4  (sharp)
#   lowest absolute error: hand cupped at ear

In Step 1 this singer’s softest tones at low and middle pitch are almost the same on the normal and the dry day, but at high pitch the level rises from 60 to 64 dB and the ease rating falls from 6 to 4, in the direction of Chapter 1’s “hydration matters mainly at high pitch”, though two days of records from one singer say nothing about cause. In Step 2 the 6 mm straw gives a back pressure of only about 0.3 cm H2O, hardly any semi-occlusion; the 4 mm straw about 1.5 cm H2O; and the 9 mm tube 4 cm under water about 4.1 cm H2O, almost all of it from the depth. In Step 3 the “bright resonance” image raises the singing power ratio from −18 to −11 dB with H1–H2 and effort roughly unchanged; the “push” image also raises the singing power ratio (−12 dB) but drops H1–H2 to −1.5 dB and raises effort to 8, a combination that suggests pressing rather than resonance. In Step 4 the singer is on average 12.8 cents flat with both ears open but 14.4 cents sharp with both blocked; the error is smallest with a hand cupped behind one ear (absolute error 3.8 cents). For this singer, blocking the ears changes the judgement of their own pitch, which is worth calibrating deliberately in rehearsal.

Note

One fictional singer’s data are not evidence. H1–H2 and the singing power ratio depend on vowel, pitch, loudness and microphone, and before-and-after comparisons of one person mean something only when all of these are held the same; they are not diagnostic indices of “pressing”. The value of the checklist lies in making the singer write observations down so they can be compared later, not in producing a “right answer”.

Part 2 A pre-registered randomised controlled trial

The question

In adults with healthy voices, does 10 minutes of “straw phonation (including a tube in water) plus bone-conduction self-monitoring calibration”, compared with 10 minutes of a usual warm-up of reading aloud, increase the periodicity of the voice in reading (measured as CPPS) immediately after the session?

Evidence

Why CPPS. Cepstral peak prominence (CPP) was introduced by Hillenbrand and colleagues as a measure of breathiness: the more periodic and the less noisy the voice, the more prominent the cepstral peak at the pitch period (Hillenbrand et al. 1994); its smoothed version, CPPS, is also valid in continuous speech, so reading can be analysed directly rather than only sustained vowels (Hillenbrand and Houde 1996). Maryn and Weenink implemented CPPS in the free program Praat (Maryn and Weenink 2015). A review by Murton, Hillman and Mehta showed that CPPS cut-offs between normal and dysphonic voices vary widely with software and settings; in one study two Praat configurations gave sustained-vowel cut-offs of about 23.6 dB and 14.0 dB (Murton et al. 2020). Self-rated effort. Van Leer and van Mersbergen found in 36 patients with voice disorders that the anchored Borg CR10 scale distinguished self-rated vocal effort before and after therapy (Leer and Mersbergen 2017); the scale derives from Borg’s category-ratio scaling (Borg 1982). Short-term effects of semi-occlusion. Existing within-subject studies show small and inconsistent short-term acoustic changes, and listener-rated strain even rose after straw phonation into water (Ford et al. 2024).

The program below computes CPPS from scratch for synthetic vowels, to show what the measure means and how sensitive it is to settings.

Calculation

# Smoothed cepstral peak prominence (CPPS), the Chapter 8 primary outcome, from scratch on
# synthetic vowels. Cepstrum = spectrum of the dB power spectrum; a periodic voice gives a
# peak at the quefrency of its period. CPP = peak height (dB) above a regression line;
# CPPS first smooths over time and quefrency (after Hillenbrand et al. 1994; Hillenbrand &
# Houde 1996). The settings here are simplified ones.
import cmath, math, random

FS, N = 16000, 1024

def fft(x):
    if len(x) == 1:
        return x
    e, o, n = fft(x[0::2]), fft(x[1::2]), len(x)
    t = [cmath.exp(-2j * math.pi * k / n) * o[k] for k in range(n // 2)]
    return [e[k] + t[k] for k in range(n // 2)] + [e[k] - t[k] for k in range(n // 2)]

def vowel(breath, f0=200.0, jitter=0.002, dur=0.6, seed=3):
    rnd, x, ph = random.Random(seed), [], 0.0
    for _ in range(int(dur * FS)):
        ph += 2 * math.pi * f0 * (1 + rnd.gauss(0, jitter)) / FS
        harmonics = sum(math.sin(h * ph) / h ** 1.5 for h in range(1, 20))
        x.append(harmonics + rnd.gauss(0, 3 * breath))
    return x

def smooth(v, w):                                   # centred moving average, window w
    h = w // 2
    return [sum(v[max(0, i - h):i + h + 1]) / len(v[max(0, i - h):i + h + 1])
            for i in range(len(v))]

def cpp(x, smoothed=True, hop=320):
    win = [0.5 - 0.5 * math.cos(2 * math.pi * i / (N - 1)) for i in range(N)]
    ceps = []
    for s in range(0, len(x) - N, hop):
        spec = fft([x[s + i] * win[i] for i in range(N)])
        logp = [10 * math.log10(abs(v) ** 2 + 1e-12) for v in spec]
        ceps.append([20 * math.log10(abs(v) / N + 1e-9) for v in fft(logp)[:N // 2]])
    # 3 frames in time, 3 bins in quefrency
    if smoothed:
        cols = [smooth([c[q] for c in ceps], 3) for q in range(N // 2)]
        ceps = [smooth([cols[q][i] for q in range(N // 2)], 3) for i in range(len(ceps))]
    qs, vals = list(range(16, N // 2)), []          # regression line from 1 ms upward
    mq = sum(qs) / len(qs)
    for c in ceps:
        mc = sum(c[q] for q in qs) / len(qs)
        b = sum((q - mq) * (c[q] - mc) for q in qs) / sum((q - mq) ** 2 for q in qs)
        qp = max(range(FS // 330, FS // 60), key=lambda q: c[q])      # search 60-330 Hz
        vals.append(c[qp] - (mc + b * (qp - mq)))
    return sum(vals) / len(vals)

print("synthetic 200 Hz vowels | CPPS (smoothed) | CPP (unsmoothed)")
for name, b in (("clear", 0.02), ("mildly breathy", 0.08), ("breathy", 0.25)):
    x = vowel(b)
    print(f"  {name:21s} | {cpp(x):11.2f} dB  | {cpp(x, smoothed=False):12.2f} dB")
print("values depend on the settings: a trial must fix software, version and settings")
# synthetic 200 Hz vowels | CPPS (smoothed) | CPP (unsmoothed)
#   clear                 |       21.52 dB  |        23.03 dB
#   mildly breathy        |       15.54 dB  |        17.56 dB
#   breathy               |        9.06 dB  |        14.92 dB
# values depend on the settings: a trial must fix software, version and settings

For three synthetic 200 Hz vowels with increasing breath noise, CPPS falls from about 21.5 dB to 15.5 dB and then to 9.1 dB, in the expected direction. But for the same signals the unsmoothed CPP is 1.5–5.9 dB higher than CPPS, and the gap widens as noise increases. This is exactly the problem Murton and colleagues pointed out: CPPS values depend on software and settings, so the trial must fix the software, its version and every parameter at registration and compare results only within one set of settings.

Design

Element Specification
Participants Adults aged 18–65 who report a normal voice and read the standard passage of the trial language fluently; recruited through university participant pools and community and online advertising; not recruited from the author’s students at vocal.guru and singingasia.com, students of 耳根圆通法 courses, the author’s community, card users or customers
Exclusions Hoarseness at screening or a clear voice disorder on the researcher’s auditory-perceptual assessment; current voice therapy, or laryngeal surgery within 12 months; upper respiratory infection within 2 weeks; regular straw or water-resistance practice (weekly or more in the past 3 months); inability to tolerate mild intraoral pressure (for example, recent oral or facial surgery)
Randomisation 1:1, variable block sizes, stratified by sex and by systematic singing training (yes/no); concealed sequence generated by an independent statistician, revealed only after baseline recording
Arm A 10 minutes: straw phonation for 4 minutes (straw 14 cm × 4 mm, gentle glides and sustained tones); water-resistance tube for 3 minutes (tube 27 cm × 9 mm, tip 2–4 cm under water, gentle bubbling); bone-conduction self-monitoring calibration for 3 minutes (short hummed and read phrases, first with both ears open, then with one ear lightly blocked by a hand, comparing by script what is heard with the vibration felt in face and chest)
Arm B (active control) 10 minutes of a usual warm-up of reading aloud: a neutral text at comfortable loudness, with ordinary relaxation (yawn–sigh) and gradual increases in loudness, and no semi-occlusion; the same guides, the same contact time and the same encouragement
Time points T0 (baseline), T1 (immediately after the session) and T2 (30 minutes after): a standard reading passage (about 30 s) and three sustained /a/; head-worn microphone at a fixed distance from the lips, sound-treated room, sound pressure level and mean F0 recorded each time
Primary outcome (single) CPPS (dB) of the reading passage at T1, adjusted for the same measure at T0
Computing CPPS Praat (version fixed at registration), using the implementation of Maryn & Weenink 2015; the F0 search range, time and quefrency smoothing windows, regression-line type and fitting method all fixed at registration, analysis script published; computed automatically, the analyst performing only pre-specified checks of recording quality
Secondary outcomes Self-rated vocal effort after reading at T1 (anchored Borg CR10); CPPS and HNR of sustained /a/ at T1; CPPS of the reading passage at T2; adverse events (dizziness, throat pain, a sense of strain)
Blinding Participants and guides cannot be blinded; the acoustic analyst does not know the allocation: recordings carry random codes, the order of T0, T1 and T2 is scrambled, and the analysis script is locked before unblinding
Analysis By randomised arm (modified intention to treat: all randomised participants with a usable T1 recording, whether or not they completed the exercises; the sample size allows for 10 % who cannot be analysed); analysis of covariance: T1 CPPS ~ arm + T0 CPPS + stratification factors; two-sided α=0.05\alpha = 0.05; pre-specified sensitivity analysis adding T1 sound pressure level and mean F0 as covariates (to rule out “they simply sang louder”)

Note

Why a single primary outcome, and why CPPS rather than self-rated effort. Participants know which exercise they are doing and cannot be blinded; self-rated vocal effort is the outcome most open to expectation, so it is secondary. CPPS can be computed by an analyst blind to allocation using a locked script, is less directly affected by expectation, and is valid in continuous speech. Its weakness is that it changes with loudness and F0, which is why the analysis plan pre-specifies sensitivity analyses for sound pressure level and F0. Of the two outcomes mentioned in the author’s framework, CPPS is primary and the Borg CR10 secondary for exactly this reason.

Sample size

Calculation

# Sample size for the Chapter 8 trial: two parallel arms, 1:1, ANCOVA. Primary outcome:
# read-passage CPPS (dB) right after the session, adjusted for baseline (variance x
# 1-rho^2):
#   n per arm = 2 (z_a + z_b)^2 sd^2 (1 - rho^2) / delta^2 + z_a^2 / 4   (normal approx.)
# Assumptions, to be checked in a pilot used for nothing else: between-person SD 1.2 dB,
# pre-post correlation 0.7 (cautious), smallest effect worth acting on 0.4 dB.
import math
from statistics import NormalDist

z = NormalDist().inv_cdf

def per_arm(delta, sd, rho, alpha=0.05, power=0.90):
    za, zb = z(1 - alpha / 2), z(power)
    n = 2 * (za + zb) ** 2 * sd ** 2 * (1 - rho ** 2) / delta ** 2 + za ** 2 / 4
    return math.ceil(n)

SD, RHO, SESOI, LOSS = 1.2, 0.7, 0.4, 0.10
print(f"sd {SD} dB, alpha 0.05 two-sided, 90 % power; analysable participants per arm")
print("  SESOI (dB) | rho = 0.6 | rho = 0.7 | rho = 0.8")
for d in (0.3, 0.4, 0.5):
    cells = "   |   ".join(f"{per_arm(d, SD, r):5d}" for r in (0.6, 0.7, 0.8))
    print(f"     {d:.1f}     |   {cells}")
n = per_arm(SESOI, SD, RHO)
rec = math.ceil(n / (1 - LOSS))
print(f"chosen: SESOI {SESOI} dB, rho {RHO} -> {n} analysable per arm, {2 * n} in all")
print(f"allowing {LOSS:.0%} loss (unusable recordings, withdrawal): "
      f"recruit {rec} per arm, {2 * rec} in all")
print(f"if rho were only 0.6: {per_arm(SESOI, SD, 0.6)} per arm would be needed")
# sd 1.2 dB, alpha 0.05 two-sided, 90 % power; analysable participants per arm
#   SESOI (dB) | rho = 0.6 | rho = 0.7 | rho = 0.8
#      0.3     |     217   |     173   |     123
#      0.4     |     123   |      98   |      70
#      0.5     |      79   |      63   |      45
# chosen: SESOI 0.4 dB, rho 0.7 -> 98 analysable per arm, 196 in all
# allowing 10% loss (unusable recordings, withdrawal): recruit 109 per arm, 218 in all
# if rho were only 0.6: 123 per arm would be needed

Taking 0.4 dB as the smallest effect of interest (no minimal important difference in CPPS has been established for healthy speakers; this is an assumption for the author to confirm), a between-person standard deviation of 1.2 dB, a cautious baseline–outcome correlation of 0.7 and 90 % power, each arm needs 98 analysable participants, 196 in all; allowing about 10 % for unusable recordings or withdrawal, 109 are recruited per arm, 218 in all. If the correlation were only 0.6, 123 per arm would be needed. The standard deviation and correlation will be checked in a pilot used for this purpose only and not pooled into the main analysis.

Decision rule

Calculation

# Decision rule for the Chapter 8 trial, fixed before any data are collected. diff =
# (straw + monitoring) minus (usual reading warm-up) in read-passage CPPS (dB),
# ANCOVA-adjusted, with 95 % CI; positive = more periodic, less noisy voice. SESOI 0.4 dB.
# Checked first: protocol fidelity and blinding of the acoustic analyst.
SESOI = 0.4

def verdict(diff, lo, hi, fidelity_ok=True, analyst_blind=True, harms=0):
    if not analyst_blind:
        return "NOT INTERPRETABLE: the acoustic analyst learned the allocation"
    if not fidelity_ok:
        return "NOT INTERPRETABLE: < 80 % of sessions delivered as scripted"
    if lo >= SESOI:
        v = "improves CPPS by at least the SESOI (0.4 dB)"
    elif lo > 0:
        v = "improves CPPS; size not shown to reach 0.4 dB"
    elif hi < 0:
        v = "LOWERS CPPS"
    elif lo >= -SESOI and hi <= SESOI:
        v = "no difference worth acting on (within +/- 0.4 dB)"
    else:
        v = "unclear: the interval is too wide to decide"
    if harms:
        v += f"; {harms} discomfort reports shown prominently"
    return v

for case in ((0.70, 0.45, 0.95), (0.30, 0.05, 0.55), (0.05, -0.20, 0.30),
             (-0.35, -0.60, -0.10), (0.20, -0.35, 0.75)):
    print(f"{case[0]:+.2f} dB ({case[1]:+.2f} to {case[2]:+.2f}): {verdict(*case)}")
print("+0.60 dB (+0.35 to +0.85), blinding broken:")
print("   " + verdict(0.6, 0.35, 0.85, analyst_blind=False))
print("+0.50 dB (+0.42 to +0.58), 3 reports of strain:")
print("   " + verdict(0.5, 0.42, 0.58, harms=3))
print("secondary outcomes (Borg CR10 effort, sustained-vowel CPPS, HNR): estimates with")
print("intervals only; they never change the verdict on the primary outcome")
# +0.70 dB (+0.45 to +0.95): improves CPPS by at least the SESOI (0.4 dB)
# +0.30 dB (+0.05 to +0.55): improves CPPS; size not shown to reach 0.4 dB
# +0.05 dB (-0.20 to +0.30): no difference worth acting on (within +/- 0.4 dB)
# -0.35 dB (-0.60 to -0.10): LOWERS CPPS
# +0.20 dB (-0.35 to +0.75): unclear: the interval is too wide to decide
# +0.60 dB (+0.35 to +0.85), blinding broken:
#    NOT INTERPRETABLE: the acoustic analyst learned the allocation
# +0.50 dB (+0.42 to +0.58), 3 reports of strain:
#    improves CPPS by at least the SESOI (0.4 dB); 3 discomfort reports shown prominently
# secondary outcomes (Borg CR10 effort, sustained-vowel CPPS, HNR): estimates with
# intervals only; they never change the verdict on the primary outcome

The example results are invented. Only if the lower limit of the 95 % confidence interval of the effect is at least 0.4 dB will the report say “the Arm A exercises raised reading CPPS by at least the smallest effect of interest”; an interval within ±0.4 dB is reported as “no difference worth acting on”, not “no effect”; and if the acoustic analyst learned the allocation, or fewer than 80 % of Arm A sessions were delivered as scripted, the result is reported as “not interpretable” whatever it shows. Any adverse events are listed prominently in the report.

What this trial cannot show

First, it tests the effect immediately after one session, not long-term training or singing performance. Second, Arm A combines three components, so even a positive result cannot show which one worked (that would need a factorial trial). Third, a rise in CPPS is not the same as listeners hearing “a better voice”; whether 0.4 dB is audible needs a perceptual study. Fourth, the participants have healthy voices; the result cannot be extended to voice disorders or taken as treatment advice. Fifth, the control arm’s reading is itself a warm-up; the trial compares two warm-ups, not “exercise against nothing”.

Ethics and conflicts of interest

The trial must be approved by an independent ethics committee, participants give informed consent, and the protocol and analysis plan are registered publicly before the first participant is enrolled (Nosek et al. 2018). The exercises are gentle and brief; guides stop by script whenever a participant reports dizziness, throat pain or clear discomfort, and every adverse event is recorded and reported. Anyone found at screening to have a possible voice problem is advised to seek medical care and is not enrolled. Participants may withdraw at any time without giving a reason.

Disclosure

The author teaches singing at vocal.guru and singingasia.com and founded the 耳根圆通法 (Ergen Yuantong) auditory-feedback singing method, and therefore has a direct commercial interest in the subject of this book and in the result of this chapter’s trial. In addition, the author uses the works of 5D Library, including this book, as the methodological basis of his community courses, the 5D Ascension Cards (Dimensional Shift Card Decks) and the Yafu AI knowledge base, and therefore has a commercial interest in the subject of this book. The book promotes no course, card deck or service; the trial in this chapter is designed to be run and analysed by people independent of the author’s businesses and does not recruit from the author’s students, community or customers; all the code and the study protocol are published openly for anyone to check. To limit the influence of these interests, the exercise scripts, recording protocol and analysis code will be published before enrolment; the guides, acoustic analyst and statistician will all be independent of the author’s businesses; and the results, anonymised data and code will be published whatever the outcome.

References

Borg, Gunnar A. V. 1982. “Psychophysical Bases of Perceived Exertion.” Medicine and Science in Sports and Exercise 14 (5): 377–81.
Ford, D. S., Eric J. Hunter, and Dimitar D. Deliyski. 2024. “Immediate Effects of Semi-Occluded Vocal Tract Exercises on Acoustic, Auditory-Perceptual, and Self-Perceptual Measures of Voice Production.” Folia Phoniatrica Et Logopaedica 76 (5): 467–81. https://doi.org/10.1159/000536002.
Hillenbrand, James, Ronald A. Cleveland, and Robert L. Erickson. 1994. “Acoustic Correlates of Breathy Vocal Quality.” Journal of Speech and Hearing Research 37 (4): 769–78. https://doi.org/10.1044/jshr.3704.769.
Hillenbrand, James, and Robert A. Houde. 1996. “Acoustic Correlates of Breathy Vocal Quality: Dysphonic Voices and Continuous Speech.” Journal of Speech and Hearing Research 39 (2): 311–21. https://doi.org/10.1044/jshr.3902.311.
Leer, Eva van, and Miriam van Mersbergen. 2017. “Using the Borg CR10 Physical Exertion Scale to Measure Patient-Perceived Vocal Effort Pre and Post Treatment.” Journal of Voice 31 (3): 389.e19–25. https://doi.org/10.1016/j.jvoice.2016.09.023.
Maryn, Youri, and David Weenink. 2015. “Objective Dysphonia Measures in the Program Praat: Smoothed Cepstral Peak Prominence and Acoustic Voice Quality Index.” Journal of Voice 29 (1): 35–43.
Murton, Olivia, Robert Hillman, and Daryush Mehta. 2020. “Cepstral Peak Prominence Values for Clinical Voice Evaluation.” American Journal of Speech-Language Pathology 29 (3): 1596–607. https://doi.org/10.1044/2020_AJSLP-20-00001.
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. https://doi.org/10.1073/pnas.1708274114.

Fan, Y. (2026). Vocal Biomechanics, Non-Linear Source-Filter Coupling and Auditory-Motor Feedback: From Titze's Self-Sustained Vocal Fold Oscillation and Vocal-Tract Inertance to the Lombard Effect, Read Beside Classical Chinese Vocal Aesthetics [嗓音生物力学、非线性源-滤波耦合与听觉-运动反馈的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23770084 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).