Skip to content

How it was made

The clips were made in two passes. In spring 2024, for the capstone, the words were found in CHILDES, cut out and screened by ear, with no thought of publishing them. In 2026, preparing this release, the 2024 clips were traced back to their source recordings and re-cut from them. All scripts are in scripts/.

1. Finding the words (2024)

CHILDES and PhonBank transcripts are in the CHAT format. A transcript line gives the speaker, the words and a time-stamp bullet that links the line to its span in the recording:

*CHI:   mama mama . ▸560740_561643

For each corpus with time-aligned audio in the Eng-NA, Eng-UK and French collections, CLAN's kwal program listed the child's utterances (+t*CHI) containing one of the three words:

kwal +smama +spapa +sdada +t*CHI *.cha +f

A small parser read the speaker, the media file and the time stamps from the output, and every matching utterance was cut from its recording. Corpora without aligned audio or with password-protected media were skipped, as were utterances whose time stamps were missing. That gave a few thousand utterance clips, from under a second to several seconds long.

2. One second per word

The on-device keyword spotter took one second of 8 kHz audio. Children often end an utterance with the word they are practising, so each clip was cut to the last second of its utterance, or kept whole if shorter, and resampled to 8 kHz.

3. Screening by ear

Every mama and papa clip was then listened to. Clips where the word was clearly inside the second were kept. The rest, mostly clips where the word fell earlier in a long utterance, were set aside: about 800 mama clips (most of them from the dense Manchester corpus) and 280 papa clips (most of them from KernFrench).

Those clips were not thrown away. They were concatenated with two seconds of silence between them, opened in Audacity, and the words were found and cut out by hand: trimmed around the word, in some cases edited further, and peak-normalised. This recovered 241 mama and 208 papa clips. The papa exports lost their names on the way (they were saved as papa_bad_ones-01.wav and so on), so which recording each came from was no longer written down anywhere.

The dada clips were cut with the same one-second rule, and 359 of the 1,026 candidates were kept. How they were chosen was not recorded, so the release does not assume they were screened by ear: the word_check column marks the 110 that span their whole utterance, which must contain the word, and the 211 that are the last second of a longer one (unchecked).

4. Recovering the provenance (2026)

By 2026 the clips existed in several overlapping folders, under file names produced by successive scripts. To release them responsibly, every clip had to be tied to the exact recording and time span it came from.

Clips with a name. Each was located inside the utterance named in its file name by normalised cross-correlation at 8 kHz, which gives its offset in the utterance and a match score between −1 and 1. Automatic clips match their utterance almost perfectly (median 0.99), since they are plain windows of it. Hand-made clips fall into two groups: trims that only chose new boundaries, which also match almost perfectly, and edits that spliced or changed the audio, which match only partly.

Clips without a name. Each of the 208 renamed papa clips was compared with every one of the 283 utterances they could have come from. Because an edited clip may match its source only in places, every voiced 250 ms window of the clip was matched separately and an utterance was scored by its best window. A source was accepted when that score was at least 0.85 and at least 0.05 above the runner-up (matched, 134 clips in the release), or when the windowed and whole-clip matches named the same utterance (matched_probable, 49). The remaining 17 clips were dropped.

Re-cutting. A clip that matched its source at 0.8 or more (automatic clips) or 0.95 or more (hand-made clips) was cut again from the original-rate audio at its recovered offset and resampled to 16 kHz, so it keeps the full bandwidth of the recording. The 226 clips whose audio had been edited keep their curated audio, resampled from the 8 kHz working copy; the metadata marks them manual_edit, with a usable bandwidth of 4 kHz.

Cleaning. Several folders held the same clip; overlapping copies of the same stretch of an utterance were kept once (142 removed). Eight clips matched no recording and were removed.

Splits. Clips were assigned to train, validation and test by child, so that no child appears in two splits (see the data card).

Checking the result. For a random sample of 150 re-cut clips, the same span was cut again directly from the CHILDES media files with rebuild_from_childes.py (tools/check_rebuild.py, seed 0). All 103 clips whose media were at hand (Manchester's were not) lined up with the released clip to within a millisecond, with a median correlation of 0.99; the remaining differences most likely come from decoding the compressed media from a different starting point. An earlier sample found two clips, out of 149, that do not match the media file now on disk, probably because a different version of the file was used in 2024.

What was left out

The capstone model was also trained on cry recordings and on additional mama and papa recordings that are not in this release; for various reasons, they cannot be shared.

Utterances from the Braunwald and Nelson corpora are held back as time stamps only; see Licence and citation.

Reproduce

Anyone can regenerate the clips that are plain windows of their recordings, and the held-back utterances, from their own copy of the CHILDES and PhonBank media:

python scripts/rebuild_from_childes.py --metadata metadata --media-root /path/to/talkbank-media \
    --out rebuilt --which both

The media are free to download from media.talkbank.org with a TalkBank account; keep the bank/collection/corpus folder layout. Clips marked manual_edit cannot be rebuilt from time stamps and exist only in the release.

The 2026 pass itself (scripts/build_from_legacy.sh) reads the 2024 working folders, which are not public; it is included so the steps above can be checked line by line.