Skip to content

Build1 publisher3 min readPublished

Ambiguity in Rule 1.3 pushes children's voice app toward on-device design

Apple's Kids Category rule and COPPA's definition of a child's voice both point a preschool voice product at local processing, and Whisper's error on children's speech falls by nearly a factor of three from tiny to large-v3.

The Engineer · Build desk

Illustration accompanying Ambiguity in Rule 1.3 pushes children's voice app toward on-device design

What happened

  • Rule 1.3 of the App Store Review Guidelines forbids apps in the Kids Category from sending personally identifiable information or device information to third parties.
  • The definition in 16 CFR section 312.2 covers an audio file containing a child's voice outright, with no further condition such as a name or identifier attached to it.
  • The Gemini API Additional Terms and section 20.d of the Google Cloud Service Specific Terms bar Google's generative services from products directed at people under eighteen.
  • OpenAI and Anthropic instead published requirements for serving minors, and those requirements include zero data retention, age verification and audit rights.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • constraint The COPPA argument only works if the whole pipeline stays local, so a cloud fallback for hard utterances puts a third party back in the diagram and reopens rule 1.3.
  • decision Model size for a preschool product has to be chosen against child-speech error, which rules out taking the 27.1-million-parameter tier on the strength of adult word-error parity.
  • contradiction Apple's guideline text and its developer page disagree on whether parental consent cures the transfer, and until that is resolved a Kids Category submission is decided by whichever text the reviewer applies.
  • cost Choosing the large local recogniser moves the budget from per-minute cloud spend to device thermals, memory and the oldest handset a family owns, and the published figures were taken on M3 Max hardware.

The compliance case for local processing is structural. If the audio never leaves the device, the operator never receives it, so no collection occurs in the COPPA sense [6]. There is no third party for rule 1.3 to reach and no vendor for the vendor terms to bind [6].

It is also all-or-nothing. The usual pipeline is microphone, cloud recognition, cloud language model, cloud synthesis, and every arrow hands a child's voice to an outside service [18]. Add a cloud fallback for the utterances the local recogniser garbles and you have kept one of those arrows.

Two of the three stages look settled. Kokoro is 82 million parameters of Apache-licensed weights at roughly 327 megabytes, with 54 voices across eight languages, which the source puts at less than the size of the average mobile game [13]. Apple Intelligence is a three-billion-parameter model on the Neural Engine of a phone you can buy today [14]. Recognition is the stage that has to carry the regulatory weight, and it is the stage where child speech costs the most.

WhisperKit reported Whisper Large v3 Turbo, a billion parameters on the Neural Engine, at 0.46 seconds of latency and 2.2 per cent word error, matching the fastest of gpt-4o-transcribe, Deepgram nova-3 and Fireworks large-v3-turbo on latency and beating all of them on accuracy [7]. That run was on a MacBook Pro with an M3 Max chip [8]. For the number to transfer, phone silicon would have to sustain that encoder-decoder inside its thermal budget, and the test audio would have to sound like a four-year-old.

That second condition carries the cost. Run the Whisper family on the OGI Kids corpus without fine-tuning and tiny at 39 million parameters returns 53.8 per cent word error, base at 74 million returns 38.0, small 25.4, medium 20.8, and large-v3 at 1.5 billion 19.9 [15]. Dividing the ends of that column gives a 2.7x spread [19]. On spontaneous children's speech in the MyST corpus the same models run from 20.6 to 12.5, a 1.65x spread [16][20]. Even the largest model sits at 12.5 per cent on MyST, about 5.7 times the 2.2 per cent WhisperKit reported [22]. Those are different corpora and different model builds, so the gap only shows a direction.

This is where the small-model tier gets awkward. Moonshine Tiny is 27.1 million parameters and Base is 61.5 million [10], and Base sits between Whisper tiny at 39 million and base at 74 million [24]. Its published parity, an average 12.66 word error against 12.81 for Whisper tiny.en with a fivefold compute reduction on a ten-second segment, is measured against adult benchmarks [11]. The child-speech rows in the benchmark are Whisper models [15]. The two Whisper sizes nearest Moonshine Base score 53.8 and 38.0 on OGI Kids [15].

The engineering that helps here runs on the compute side of the same large model. WhisperKit's self-distilled encoder with block-causal masks takes encoder latency from 602 to 218 milliseconds, which the team describes as a 65 per cent cut and which divides out to 63.8 per cent, with accuracy within one per cent of the original [9][21]. Moonshine's authors make the adjacent point about the input side: dropping Whisper's mandatory zero-padding to thirty seconds removes the roughly 500-millisecond lower latency bound that Whisper tiny.en had on cheap ARM processors [12].

What to watch

  • Whether Apple reconciles rule 1.3 with the parental-consent caveat on its own developer page, or leaves reviewers to arbitrate the two texts.
  • Whether anyone publishes child-speech word error for Moonshine, or for small models fine-tuned on OGI Kids and MyST.
  • Whether WhisperKit-class latency and accuracy figures get republished on phone silicon instead of an M3 Max laptop.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories