The problem

CALL-E speaks your task text to a real person. You cannot hear it first.

Three things go wrong only at the point where prose becomes speech. All three are invisible in review.

A line disappears. Several apps in this repository depend on one sentence surviving. phone-approval-gate reports approval only when a person reads back a six digit code, so the sentence asking for that code is the whole mechanism. Somebody tidies the wording, the sentence goes, then nobody can approve anything. The test suite still passes, because nothing tests prose.

The voice cannot speak the recipient's language. A recipient carrying locale: hi-IN with an English only voice is a call that wastes somebody's time and burns the one attempt you had.

The script is longer spoken than anyone thought. Characters do not tell you seconds. A budget only means something measured against real audio.

What it does

It renders the exact task text through a text to speech API you already pay for, so you hear what the callee will hear. Then it reports findings and exits non zero when one of them should stop the call.

Finding Blocks Why
locked_line_missing yes a line you declared critical is not in the task, so it cannot be spoken
voice_language_mismatch yes the voice does not speak the recipient's language
text_over_provider_limit yes the provider will not accept the script in one request
spoken_too_long yes measured audio exceeds the budget you set
digit_run_unseparated no a run of four or more digits is present, so listen to how it reads

That last row is deliberately not a refusal. A provider may read 999833 digit by digit or as a quantity. The only way to know is the audio this tool just wrote for you. The audio is the ground truth. A person listening to it is the real check, which is why nothing here predicts pronunciation.

Bring your own provider

One HTTP client drives any text to speech API from a JSON descriptor, so adding a provider is a file rather than a code change. Nothing is hardcoded to one vendor and no key of ours ships with it. Duration is measured from the returned container rather than estimated from character count.

It places no calls and needs no CALL-E account

That is the point. It runs before the call, so it costs nothing and rings nobody. npm test and npm run demo need no credentials and no network beyond loopback, which means a judge can run the whole thing in under a minute.

What is real

84 tests, tsc --noEmit clean, npm run demo runs four cases against a local fake provider and the last three all refuse: the code sentence removed, a Hindi recipient with an English voice and a script that grew past its spoken budget. The fake returns a real PCM WAV whose length is derived from the text, so the budget case crosses on arithmetic rather than on luck.

Built With

  • accessibility
  • call-e
  • i18n
  • json-schema
  • node-test-runner
  • node.js
  • text-to-speech
  • tts
  • typescript
  • wav
Share this project:

Updates

Submission history