{
  "name": "WhipScribe long-recording transcription: 90-day production results",
  "publisher": "WhipScribe (Neugence Technology Pvt. Ltd.)",
  "url": "https://whipscribe.com/proof/long-files",
  "date_published": "2026-10-04",
  "about": "Three public test runs on 4 October 2026 (public-domain recordings, transcripts linked), and aggregate results from WhipScribe's own production job records: how many transcription jobs finished or failed, by recording length, and how long they took. The aggregates are counts and durations only: no titles, owners, links or job ids of customer recordings.",
  "window": {
    "from": "2026-07-06T07:05Z",
    "to": "2026-10-04T07:05Z",
    "days": 90,
    "timezone": "UTC"
  },
  "generated_at": "2026-10-04T07:05:29Z",
  "date_modified": "2026-10-04",
  "test_runs": {
    "headline": "A 9.3-hour recording transcribed in 17 minutes (95,578 words), checked 4 Oct 2026.",
    "method": "Public-domain LibriVox audiobooks from archive.org, each submitted as a link to the production WhipScribe service on 4 October 2026. processing_s is the processing time on the job record (the time to finish shown on the page); realtime_factor = duration_s / processing_s; words and language come from the stored transcript. Queue time and the link download come on top.",
    "fault_and_fix": "3-4 October 2026: long files failed with GPU out-of-memory errors (the 2.48 h run failed twice before finishing; the 9.31 h run's first attempts failed). Fixed on 4 October 2026: the engine releases GPU cache after every request, a piece that runs out of memory is retried at a smaller batch, and a watchdog restarts the engine when idle memory stays high. The 9.31 h run finished after the fix.",
    "runs": [
      {
        "title": "Five Little Plays by Alfred Sutro (LibriVox)",
        "archive_item_url": "https://archive.org/details/FiveLittlePlays",
        "source_url": "https://archive.org/download/FiveLittlePlays/FiveLittlePlays.mp3",
        "license": "Public domain (LibriVox)",
        "size_bytes": 95649280,
        "duration_s": 8917.67,
        "duration_h": 2.48,
        "processing_s": 200.27,
        "realtime_factor": 44.5,
        "words": 21888,
        "language": "en",
        "view_url": "https://whipscribe.com/view?id=a2b3f357-5a0b-49b9-96eb-bf9cfe165698",
        "transcript_json_url": "https://whipscribe.com/api/v1/jobs/a2b3f357-5a0b-49b9-96eb-bf9cfe165698/result?format=json",
        "completed_at": "2026-10-04T08:00:19Z",
        "status": "done",
        "checked": "2026-10-04",
        "note": "Failed twice earlier on 4 Oct 2026 (GPU out of memory on part 1 of 3); finished on the third attempt. queued_to_done_s counts all three."
      },
      {
        "title": "The Revolt of the Angels, Part A by Anatole France (LibriVox)",
        "archive_item_url": "https://archive.org/details/TheRevoltOfTheAngelsPartA",
        "source_url": "https://archive.org/download/TheRevoltOfTheAngelsPartA/TheRevoltOfTheAngelsPartA.mp3",
        "license": "Public domain (LibriVox)",
        "size_bytes": 209657856,
        "duration_s": 17800.51,
        "duration_h": 4.94,
        "processing_s": 372.33,
        "realtime_factor": 47.8,
        "words": 37226,
        "language": "en",
        "view_url": "https://whipscribe.com/view?id=8b8bc524-a380-4334-b97d-10fbe96475a9",
        "transcript_json_url": "https://whipscribe.com/api/v1/jobs/8b8bc524-a380-4334-b97d-10fbe96475a9/result?format=json",
        "completed_at": "2026-10-04T08:17:40Z",
        "status": "done",
        "checked": "2026-10-04"
      },
      {
        "title": "The Book of Mormon, Part C (LibriVox)",
        "archive_item_url": "https://archive.org/details/TheBookOfMormon",
        "source_url": "https://archive.org/download/TheBookOfMormon/TheBookOfMormonPartC.mp3",
        "license": "Public domain (LibriVox)",
        "size_bytes": 398261760,
        "duration_s": 33500.64,
        "duration_h": 9.31,
        "processing_s": 1032.77,
        "realtime_factor": 32.4,
        "words": 95578,
        "language": "en",
        "view_url": "https://whipscribe.com/view?id=89e45f8b-d5b6-4001-9b13-4f8d944fe477",
        "transcript_json_url": "https://whipscribe.com/api/v1/jobs/89e45f8b-d5b6-4001-9b13-4f8d944fe477/result?format=json",
        "completed_at": "2026-10-04T17:16:37Z",
        "status": "done",
        "checked": "2026-10-04",
        "note": "Earlier attempts on 4 Oct 2026 hit the same GPU memory fault; finished after the fix the same day. queued_to_done_s counts the wait for the fix."
      }
    ]
  },
  "method": {
    "population": "Every job created in the window whose final status is done or failed (cancelled jobs excluded). Duration is the measured audio length of the recording.",
    "bands": "By measured audio duration: under 30 min, 30-60 min, 1-2 h, 2-4 h, 4-8 h, 8 h+ (lower bound inclusive).",
    "success_rate": "done / (done + failed_our_side). failed_our_side = failures in our processing (GPU service unreachable or out of memory, time limit, stalled worker, decoder errors, internal errors). Not counted against us: links whose source is gone, private, DRM-protected, a live stream, an unsupported site, or a file with no audio (failed_link_source_unavailable), and links where the platform refused our download (403, sign-in or rate-limit walls; failed_link_fetch_blocked, shown separately and in success_rate_pct_including_fetch_blocked). Paywall refusals never become jobs, so they are not in this data.",
    "failed_without_measured_duration": "Most failed link jobs fail before any audio is measured. Our-side failures without a measured duration were banded by the pre-transcription size estimate (counted in failed_our_side_duration_estimated); source/fetch failures without one appear only in totals.",
    "turnaround": "completed_at minus created_at, wall-clock, so it includes queueing and, for links, the download. Per audio hour = turnaround / (duration in hours). processing_s_* is the transcription stage alone. Under 30 min the per-hour figures are inflated by fixed per-job overhead (a 2-minute clip finishing in 13 s is 390 s per audio hour)."
  },
  "totals": {
    "jobs_done": 4229,
    "jobs_failed": 549,
    "failed_our_side": 120,
    "failed_link_source_unavailable": 303,
    "failed_link_fetch_blocked": 126,
    "success_rate_pct": 97.2,
    "success_rate_pct_excluding_incidents": 99.0,
    "success_rate_pct_including_fetch_blocked": 94.5,
    "failed_without_duration_by_class": {
      "processing": 15,
      "source": 33
    },
    "done_without_duration": 14,
    "recordings_2h_plus_done": 334,
    "hours_2h_plus_done": 1149.9,
    "total_hours": 2591.5,
    "longest_completed_s": 39348,
    "longest_completed_h": 10.93,
    "done_by_input": {
      "file_upload": 2170,
      "link": 1004,
      "api": 989,
      "microphone_recording": 66
    }
  },
  "bands": [
    {
      "band": "under 30 min",
      "done": 2736,
      "hours_done": 286.4,
      "failed_our_side": 87,
      "failed_our_side_duration_estimated": 22,
      "failed_our_side_outside_incidents": 24,
      "failed_link_source_unavailable": 266,
      "failed_link_fetch_blocked": 124,
      "success_rate_pct": 96.9,
      "success_rate_pct_excluding_incidents": 99.1,
      "turnaround_s_median": 13,
      "turnaround_s_p90": 91,
      "turnaround_s_per_audio_hour_median": 385,
      "turnaround_s_per_audio_hour_p90": 2461,
      "processing_s_per_audio_hour_median": 302,
      "processing_s_per_audio_hour_p90": 1375
    },
    {
      "band": "30-60 min",
      "done": 617,
      "hours_done": 463.9,
      "failed_our_side": 1,
      "failed_our_side_duration_estimated": 0,
      "failed_our_side_outside_incidents": 0,
      "failed_link_source_unavailable": 1,
      "failed_link_fetch_blocked": 0,
      "success_rate_pct": 99.8,
      "success_rate_pct_excluding_incidents": 100.0,
      "turnaround_s_median": 101,
      "turnaround_s_p90": 216,
      "turnaround_s_per_audio_hour_median": 129,
      "turnaround_s_per_audio_hour_p90": 313,
      "processing_s_per_audio_hour_median": 123,
      "processing_s_per_audio_hour_p90": 218
    },
    {
      "band": "1-2 h",
      "done": 528,
      "hours_done": 691.3,
      "failed_our_side": 6,
      "failed_our_side_duration_estimated": 0,
      "failed_our_side_outside_incidents": 1,
      "failed_link_source_unavailable": 0,
      "failed_link_fetch_blocked": 2,
      "success_rate_pct": 98.9,
      "success_rate_pct_excluding_incidents": 99.8,
      "turnaround_s_median": 171,
      "turnaround_s_p90": 474,
      "turnaround_s_per_audio_hour_median": 128,
      "turnaround_s_per_audio_hour_p90": 330,
      "processing_s_per_audio_hour_median": 123,
      "processing_s_per_audio_hour_p90": 199
    },
    {
      "band": "2-4 h",
      "done": 246,
      "hours_done": 700.4,
      "failed_our_side": 2,
      "failed_our_side_duration_estimated": 0,
      "failed_our_side_outside_incidents": 0,
      "failed_link_source_unavailable": 2,
      "failed_link_fetch_blocked": 0,
      "success_rate_pct": 99.2,
      "success_rate_pct_excluding_incidents": 100.0,
      "turnaround_s_median": 1085,
      "turnaround_s_p90": 1506,
      "turnaround_s_per_audio_hour_median": 344,
      "turnaround_s_per_audio_hour_p90": 566,
      "processing_s_per_audio_hour_median": 99,
      "processing_s_per_audio_hour_p90": 202
    },
    {
      "band": "4-8 h",
      "done": 82,
      "hours_done": 388.7,
      "failed_our_side": 2,
      "failed_our_side_duration_estimated": 0,
      "failed_our_side_outside_incidents": 2,
      "failed_link_source_unavailable": 1,
      "failed_link_fetch_blocked": 0,
      "success_rate_pct": 97.6,
      "success_rate_pct_excluding_incidents": 97.6,
      "turnaround_s_median": 1325,
      "turnaround_s_p90": 1514,
      "turnaround_s_per_audio_hour_median": 273,
      "turnaround_s_per_audio_hour_p90": 351,
      "processing_s_per_audio_hour_median": 94,
      "processing_s_per_audio_hour_p90": 209
    },
    {
      "band": "8 h+",
      "done": 6,
      "hours_done": 60.8,
      "failed_our_side": 7,
      "failed_our_side_duration_estimated": 0,
      "failed_our_side_outside_incidents": 3,
      "failed_link_source_unavailable": 0,
      "failed_link_fetch_blocked": 0,
      "success_rate_pct": 46.2,
      "success_rate_pct_excluding_incidents": 66.7,
      "turnaround_s_median": 1973,
      "turnaround_s_p90": 5130,
      "turnaround_s_per_audio_hour_median": 186,
      "turnaround_s_per_audio_hour_p90": 472,
      "processing_s_per_audio_hour_median": 102,
      "processing_s_per_audio_hour_p90": 153
    }
  ],
  "incident_windows": [
    {
      "window_utc": "2026-09-19T09:32:00Z to 2026-09-20T00:00:00Z",
      "what": "One GPU server's transcription service was stopped for running out of memory; jobs sent to it failed until it was restarted (last such failure about 21:30 UTC; window closed at midnight).",
      "failed_our_side": 6,
      "done": 31
    },
    {
      "window_utc": "2026-09-21T15:22:00Z to 2026-09-22T13:58:00Z",
      "what": "The same kind of outage on one GPU server; fixed on 2026-09-22 with a service that restarts itself.",
      "failed_our_side": 61,
      "done": 82
    },
    {
      "window_utc": "2026-09-26T00:15:00Z to 2026-09-26T00:18:00Z",
      "what": "A GPU out-of-memory burst: 11 failures in 3 minutes.",
      "failed_our_side": 11,
      "done": 8
    },
    {
      "window_utc": "2026-10-03T03:11:00Z to 2026-10-03T05:10:00Z",
      "what": "GPU memory exhaustion on both GPU servers; long recordings failed. The affected jobs were re-run and finished, so the records show them as done and this window holds no failures.",
      "failed_our_side": 0,
      "done": 6
    }
  ],
  "long_files_before_after_split": {
    "4h_plus": {
      "before_2026-09-23_split": {
        "done": 74,
        "failed_our_side": 6
      },
      "after_2026-09-23_split": {
        "done": 14,
        "failed_our_side": 3
      }
    },
    "8h_plus": {
      "before_2026-09-23_split": {
        "done": 4,
        "failed_our_side": 4
      },
      "after_2026-09-23_split": {
        "done": 2,
        "failed_our_side": 3
      }
    }
  },
  "long_files_before_after_split_note": "On 2026-09-23 we changed how recordings over 90 minutes are processed. The counts are split at that date.",
  "daily_clusters_our_side_failures_ge4": [
    {
      "date": "2026-08-13",
      "failed_our_side": 4,
      "done": 16
    },
    {
      "date": "2026-09-19",
      "failed_our_side": 6,
      "done": 44
    },
    {
      "date": "2026-09-22",
      "failed_our_side": 59,
      "done": 69
    },
    {
      "date": "2026-09-26",
      "failed_our_side": 11,
      "done": 168
    }
  ],
  "limits": {
    "max_hours_per_file": 10,
    "max_gb_per_file": 5,
    "note": "Uploads are refused above 5 GB. No check refuses a file by duration, but each job has a fixed processing time limit, and recordings of 9.7, 10.3 and 12.2 hours failed on it between 2026-09-28 and 2026-09-30 while 10.0 h and 10.9 h recordings finished. We state 10 hours as the per-file limit; split anything longer."
  },
  "reading_notes": [
    "Recordings of 1 to 4 hours: 98.9% (1-2 h) and 99.2% (2-4 h) success, 99.8% and 100% outside the incident windows.",
    "Recordings of 8 hours or more are the weak band: 6 done, 7 failed on our side (46.2%; 66.7% outside incidents). Do not read a reliability claim above 8 hours into this data.",
    "Turnaround is wall clock from submission to finished transcript, including queueing and, for links, the download. The transcription stage alone took a median of 94-123 seconds per audio hour for recordings over 30 minutes.",
    "Under 30 minutes the per-hour figures are inflated by fixed per-job overhead.",
    "8 h+: the GPU memory fault behind the recent long-file failures was fixed on 2026-10-04; the 9.31 h test run finished after the fix in 1,033 s. The 90-day band figures predate the fix and will be refreshed; new runs will show there."
  ],
  "reproduce_with": [
    {
      "title": "Five Little Plays by Alfred Sutro (LibriVox)",
      "source_url": "https://archive.org/download/FiveLittlePlays/FiveLittlePlays.mp3",
      "archive_item_url": "https://archive.org/details/FiveLittlePlays",
      "license": "Public domain (LibriVox, CC0 1.0 on archive.org)",
      "size_bytes": 95649280,
      "duration_s": 8917.67
    },
    {
      "title": "The Revolt of the Angels, Part A by Anatole France (LibriVox)",
      "source_url": "https://archive.org/download/TheRevoltOfTheAngelsPartA/TheRevoltOfTheAngelsPartA.mp3",
      "archive_item_url": "https://archive.org/details/TheRevoltOfTheAngelsPartA",
      "license": "Public domain (LibriVox, CC0 1.0 on archive.org)",
      "size_bytes": 209657856,
      "duration_s": 17800.51
    },
    {
      "title": "The Book of Mormon, Part C (LibriVox)",
      "source_url": "https://archive.org/download/TheBookOfMormon/TheBookOfMormonPartC.mp3",
      "archive_item_url": "https://archive.org/details/TheBookOfMormon",
      "license": "Public domain (LibriVox, CC0 1.0 on archive.org)",
      "size_bytes": 398261760,
      "duration_s": 33500.64
    }
  ],
  "reproduce_note": "Public-domain LibriVox recordings on archive.org, each one MP3 under 5 GB (size from the HTTP Content-Length header, duration from ffprobe). Our own runs of these files are in test_runs, with links to the transcripts; paste any of these links into whipscribe.com to run the same test. The 90-day aggregates do not include these test runs.",
  "sources": [
    "WhipScribe production job records (status, measured audio duration, created and completed times, processing time, error class), queried 2026-10-04",
    "WhipScribe operations log for 2026-09-19 to 2026-09-23 and 2026-10-03 (incident times)",
    "WhipScribe production job records of the three test runs, 2026-10-04"
  ]
}
