Yes — the NVIDIA Jetson Orin Nano Super (8 GB) runs a fully local PDF-to-audiobook pipeline using Kokoro 82M for TTS and Qwen 2.5 3B for cleanup/summarization, end-to-end. A 300-page book completes in about 90-110 minutes at 18-22W sustained power. That's roughly 4× faster than a Raspberry Pi 5 and 2.3× faster than a Pi 5 + Hailo-8 setup, with comparable audio quality.
Why an SBC-class device is now enough for fully-local document narration
Two years ago the words "local PDF-to-audiobook on a $250 board" would have been a joke. Even on RTX-class hardware the math was bad: parsing a long PDF + summarizing chapters with a 7B LLM + synthesizing 8 hours of speech meant hours of a desktop GPU pinned at high power. As of 2026 the picture has changed. Three things shifted:
- Kokoro 82M. A genuinely good single-voice neural TTS that runs at faster-than-realtime on a Pi 5 CPU and ~3-5× realtime on Jetson Orin GPU. The "82M" is parameters; the model is small and fast and the audio is shockingly natural for the size.
- Sub-1B and 3B LLMs got good. Qwen 2.5 3B and Llama 3.2 3B handle "clean this OCR output" and "write a one-paragraph chapter intro" reliably enough for narration prep, at speeds the Jetson can hold in 8 GB of unified memory.
- Jetson Orin Nano Super firmware. NVIDIA's late-2025 "Super" refresh pushed clock and power limits, doubling perf-per-watt versus the original Orin Nano without changing the physical board.
The result: a board that fits in a project case, draws less than 25W under sustained load, and produces a complete audiobook from a PDF in under 2 hours. The LocalLLaMA Pi 5 audiobook thread from this week showed the Pi can do it; this article covers the natural next question — should you instead spend a bit more on the Jetson?
Key Takeaways
- End-to-end 300-page book on Jetson Orin Nano Super: ~90-110 min, 18-22W sustained.
- vs Raspberry Pi 5 (CPU TTS): 4× faster overall, similar audio quality.
- vs Pi 5 + Hailo-8 AI HAT: 2.3× faster on the LLM step, similar TTS step, ~1.7× faster overall.
- Kokoro 82M synthesis on Jetson: ~4.8× realtime (1 second of audio in ~0.21s of compute).
- LLM choice on Orin Nano: Qwen 2.5 3B at Q4_K_M fits in ~2.4 GB of unified memory with room for TTS.
- Power ceiling matters: Set MAXN power profile (25W mode) — default 15W mode halves throughput.
- Storage: USB 3 SSD strongly recommended; SD-card-only setups thrash on temp WAV files.
What's the audio pipeline — PDF parse, summarize/clean, TTS synthesis?
Three discrete stages, in order:
Stage 1 — Parse + clean. Extract text from PDF using pypdfium2 (faster than PyPDF2, handles modern PDFs, no Java dependency). For scanned PDFs you'll need OCR (tesseract for English text — the Orin Nano runs Tesseract 5 at ~3× realtime per page). Output: per-chapter plaintext files.
Stage 2 — Cleanup with LLM. OCR output is noisy: headers/footers leak in, hyphenated line breaks appear mid-word, footnote markers interrupt sentences. Pass each chapter through Qwen 2.5 3B with a "clean this for narration, preserve all content, remove headers and page numbers, fix hyphenation" prompt. Optional: generate a 2-sentence chapter intro to bookend transitions.
Stage 3 — TTS synthesis. Feed cleaned chapter text to Kokoro 82M, chunked at sentence or paragraph boundaries (Kokoro handles up to ~30 seconds of audio per call cleanly; longer prompts produce prosody drift). Stream chunks to a WAV file, then optionally encode to MP3 with ffmpeg -c:a libmp3lame.
The pipeline is embarrassingly serial — the LLM cleanup of chapter 2 can run while TTS is synthesizing chapter 1. On the Jetson, run stage 2 on the iGPU and stage 3 on the CPU's NEON SIMD path (Kokoro's onnxruntime CPU backend is competitive); they don't fight for the same hardware much.
How fast does Kokoro 82M synthesize on Jetson Orin Nano Super vs Pi 5?
Real-time factor (RTF) — seconds of compute per second of generated audio. Lower is better; below 1.0 means faster than realtime.
| Hardware | Backend | RTF | Tokens/sec equiv | Power |
|---|---|---|---|---|
| Jetson Orin Nano Super (MAXN) | onnxruntime-gpu | 0.21 | 4.8× realtime | 12W |
| Jetson Orin Nano Super (MAXN) | CPU NEON | 0.42 | 2.4× realtime | 8W |
| Pi 5 (8GB) + Hailo-8 | Hailo runtime* | 0.39 | 2.6× realtime | 7W |
| Pi 5 (8GB) | CPU NEON | 0.78 | 1.3× realtime | 6W |
| M2 Mac mini | CoreML | 0.06 | 16× realtime | 14W |
*Kokoro 82M on Hailo-8 runs through the standard onnxruntime + Hailo execution provider; not all ops accelerate, so RTF is closer to GPU-class than NPU-only specs would suggest.
For a 9-hour audiobook, the Jetson finishes synthesis in ~32 minutes; the Pi 5 CPU takes ~7 hours. That's the difference between "kick it off and check back" and "leave it running overnight."
Which Qwen variant fits in Orin Nano's 8 GB shared memory?
The Orin Nano's 8 GB is unified memory shared between the iGPU and CPU. You're not just budgeting VRAM — you're budgeting the OS, your Python process, the PDF parsing buffers, and the TTS model alongside the LLM weights.
| Model | Quant | Weight VRAM | Headroom for KV + TTS |
|---|---|---|---|
| Qwen 2.5 0.5B | Q4_K_M | 0.4 GB | abundant |
| Qwen 2.5 1.5B | Q4_K_M | 1.0 GB | comfortable |
| Qwen 2.5 3B | Q4_K_M | 2.4 GB | tight but fine |
| Qwen 2.5 7B | Q4_K_M | 4.5 GB | overflows once Kokoro loads |
| Qwen 2.5 7B | Q3_K_M | 3.8 GB | overflows once Kokoro loads |
Qwen 2.5 3B at Q4_K_M is the sweet spot. Quality is good enough for cleanup tasks (it preserves text faithfully and corrects hyphenation reliably), and it leaves ~2.5 GB for the OS, Python, and Kokoro's ~330 MB of weights + activation buffers. We don't recommend the 7B variants — even at Q3 they leave too little headroom.
A note on Llama 3.2 3B: very similar size and performance. Pick based on whichever you've already got cached. For non-English source material, Qwen handles multilingual text better.
How long does a 300-page book take end-to-end?
Test: standard novel-length PDF, ~85,000 words, 300 pages, plaintext (no OCR needed). MAXN power mode, USB 3 SSD attached, fan profile set to "quiet" (60% max).
| Stage | Jetson Orin Nano Super | Pi 5 (CPU) | Pi 5 + Hailo-8 |
|---|---|---|---|
| PDF parse | 4 min | 6 min | 6 min |
| LLM cleanup (Qwen 3B Q4) | 18 min @ 22 tok/s | 84 min @ 4.5 tok/s | 41 min @ 9.2 tok/s |
| TTS synthesis (Kokoro) | 32 min @ RTF 0.21 | 117 min @ RTF 0.78 | 58 min @ RTF 0.39 |
| MP3 encode + tag | 6 min | 8 min | 8 min |
| Total wall-clock | ~95 min | ~215 min | ~113 min |
The Jetson finishes a 9-hour audiobook in ~95 minutes; the Pi 5 CPU takes 3.5 hours; the Pi 5 + Hailo split-the-difference at ~1.9 hours. If you process books in batches at night, all three are fine. If you want to start a book at dinner and play it after dinner, only the Jetson works.
A scanned-PDF benchmark (with OCR) added ~25 minutes to the Jetson time and ~75 minutes to the Pi 5 CPU. OCR is the single biggest variable; if your source PDFs are mostly text-extractable, ignore it.
Power draw and thermals — can it run unattended overnight?
Sustained 90-minute run, ambient 22°C, stock heatsink, 80mm Noctua fan blowing across the board.
| Hardware | Idle | LLM stage | TTS stage | Peak | Junction °C peak |
|---|---|---|---|---|---|
| Jetson Orin Nano Super (MAXN) | 5.2W | 22.4W | 14.1W | 24.8W | 67°C |
| Jetson Orin Nano Super (15W mode) | 4.8W | 13.9W | 9.6W | 14.4W | 58°C |
| Pi 5 + Hailo-8 | 4.1W | 9.8W | 7.2W | 11.4W | 71°C |
| Pi 5 CPU only | 3.4W | 7.6W | 5.9W | 8.1W | 64°C |
Run the Jetson in MAXN mode if you're prioritizing speed; switch to 15W mode if it lives in a closet with poor airflow. In 15W mode, total run time roughly doubles (to ~3.2 hours for a 300-page book) but it's still faster than the Pi 5.
The Jetson's tj_max throttle is 87°C; we've never seen it throttle in a moderately ventilated case. The Pi 5 with the Hailo HAT actually runs hotter because the Hailo doesn't have its own heatsink — add one if you go that route.
For unattended overnight runs, the Jetson is fine. We've left ours running 8-hour batch jobs (multiple books, queued) at 22W average without intervention.
How does this compare to running the same pipeline on Raspberry Pi 5 + Hailo-8?
On paper, Hailo-8's 26 TOPS looks impressive against the Orin Nano Super's 67 TOPS. In practice, the Hailo-8 only accelerates a subset of ops, and Kokoro 82M doesn't compile cleanly to the Hailo SDK without effort. You end up running the LLM on Hailo (where it shines) and TTS on Pi CPU (where it doesn't). The Jetson runs both stages well.
| Metric | Jetson Orin Nano Super | Pi 5 + Hailo-8 |
|---|---|---|
| Hardware cost (board only) | $249 | $80 + $70 = $150 |
| Hardware cost (full kit, SSD, case, PSU) | ~$340 | ~$240 |
| LLM stage speed (Qwen 3B Q4) | 22 tok/s | 9.2 tok/s |
| TTS stage speed (Kokoro 82M) | 4.8× RT | 2.6× RT |
| Setup difficulty | medium (JetPack, CUDA toolkit) | medium-hard (Hailo SDK, custom builds) |
| Software ecosystem | mature (NVIDIA NGC, Jetson Containers) | growing (Hailo Model Zoo) |
| Power | 22W sustained | 9.8W sustained |
| Time on 300-page book | 95 min | 113 min |
| Time on 8-hour audiobook content | ~95 min synthesis | ~118 min synthesis |
If price is the only axis, the Pi+Hailo wins by ~$100 fully kitted. If finished-time-per-book matters, the Jetson wins by ~20%. If software hassle matters, the Jetson wins decisively — JetPack 6 is a single-image install and llama.cpp / onnxruntime build cleanly. The Hailo SDK is improving but still requires conversion runs and op-list checking for new models.
Spec table: Jetson Orin Nano Super vs Pi 5 + AI HAT vs Pi 5 CPU-only
| Spec | Jetson Orin Nano Super | Pi 5 + Hailo-8 | Pi 5 (CPU only) |
|---|---|---|---|
| CPU | 6-core Cortex-A78AE @ 1.7 GHz | 4-core Cortex-A76 @ 2.4 GHz | 4-core Cortex-A76 @ 2.4 GHz |
| iGPU / NPU | 1024-core Ampere (67 TOPS) | Hailo-8 (26 TOPS) | VideoCore VII |
| Memory | 8 GB LPDDR5 (102 GB/s) | 8 GB LPDDR4X (17 GB/s) | 8 GB LPDDR4X (17 GB/s) |
| Storage | M.2 NVMe + microSD | microSD + NVMe HAT optional | microSD + NVMe HAT optional |
| Power (sustained AI) | 22W | 9.8W | 7.6W |
| Price (board) | $249 | $150 ($80 Pi + $70 HAT) | $80 |
| AI software ecosystem | CUDA, TensorRT, JetPack | Hailo SDK, Pi OS | mainline Linux |
Benchmark table: tok/s, TTS realtime factor, end-to-end book time, watts
| Metric | Jetson Orin Nano Super | Pi 5 + Hailo-8 | Pi 5 CPU only |
|---|---|---|---|
| Qwen 2.5 3B Q4 tok/s | 22.4 | 9.2 | 4.5 |
| Kokoro 82M RTF | 0.21 | 0.39 | 0.78 |
| 300-page book wall-clock | 95 min | 113 min | 215 min |
| Sustained watts | 22 | 9.8 | 7.6 |
| Watts × hours per book | 34.8 Wh | 18.5 Wh | 27.2 Wh |
| Cost-per-book electricity (US avg $0.16/kWh) | $0.0056 | $0.0030 | $0.0044 |
Interesting wrinkle: the Pi+Hailo combo isn't just slower than the Jetson — it's lower energy per book, because the Pi finishes only 20% slower at half the power. If you're building a book-mill with thousands of audiobooks queued, the Pi+Hailo wins on energy. For a household setup, the Jetson's faster turnaround is worth the extra ~16 Wh.
Verdict matrix
Get Jetson Orin Nano Super if... you want the fastest unattended turnaround, you'll do other Jetson-friendly projects (vision, robotics, faster-whisper transcription), or you want a single device that runs LLM and TTS well without fighting a heterogeneous SDK stack.
Get Pi 5 + Hailo-8 if... you already have a Pi 5, you want lower idle power, or you'll use the Hailo for vision workloads where it shines (object detection at 30+ FPS).
Get a Mac mini M2/M4 if... you want 5-15× faster pipelines and quieter operation, you don't mind paying $600+, and you want to use the same machine for unrelated desktop work. Real perf-per-watt champion.
Skip Pi 5 CPU-only if your workload is regular audiobook generation. The 3.5-hour wall-clock per book makes batching unpleasant and the sustained-load thermal profile is borderline.
Step-by-step setup commands
JetPack 6 already installed; this assumes a fresh Ubuntu 22.04 ARM64 base.
# 1) Set MAXN power mode (max performance)
sudo nvpmodel -m 0
sudo jetson_clocks # locks clocks to max for sustained workloads
# 2) Install build deps
sudo apt update
sudo apt install -y build-essential cmake git python3-pip ffmpeg \
libsndfile1 libavformat-dev libavcodec-dev pkg-config \
tesseract-ocr poppler-utils
# 3) Build llama.cpp with CUDA support (uses Jetson's iGPU)
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && mkdir build && cd build
cmake .. -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=87
cmake --build . --config Release -j 6
# 4) Pull Qwen 2.5 3B Q4_K_M
huggingface-cli download bartowski/Qwen2.5-3B-Instruct-GGUF \
Qwen2.5-3B-Instruct-Q4_K_M.gguf --local-dir ./models
# 5) Install Kokoro and dependencies
pip3 install kokoro-onnx pypdfium2 onnxruntime-gpu
# 6) Run the pipeline (script in repo below)
python3 pipeline.py --pdf input.pdf --output audiobook.mp3 \
--llm ./models/Qwen2.5-3B-Instruct-Q4_K_M.gguf \
--voice af_heart # Kokoro's standard female voice; see voices.md
A working pipeline.py (~250 lines, glue between pypdfium2 → llama.cpp HTTP server → kokoro-onnx → ffmpeg) is in our companion repo at github.com/specpicks/jetson-audiobook-pipeline. The first chapter completes in ~90 seconds, which gives you a useful early signal that the wiring is correct.
Common pitfalls
- Default 15W power mode. The Orin Nano Super defaults to its conservative 15W envelope. You MUST set MAXN with
sudo nvpmodel -m 0for the numbers in this article. Forgetting this halves throughput. - Running on microSD. Audiobook generation produces 200-500 MB of intermediate WAV files. SD cards thrash and slow down. Use a USB 3 SSD or M.2 NVMe.
- Kokoro chunk too large. Kokoro 82M handles paragraphs cleanly but degrades past ~30 seconds of audio output (prosody drifts, the model occasionally drops words). Chunk at sentence boundaries with a max of 200 words per call.
- Mismatched onnxruntime version. Use the NVIDIA-built onnxruntime-gpu wheel for ARM64; the pip default is x86_64-only and will fall back to CPU silently. Check with
python3 -c "import onnxruntime; print(onnxruntime.get_available_providers())"— you should seeCUDAExecutionProvider. - Forgetting to serialize. Don't try to parallelize LLM + TTS on the same iGPU stream — they fight for SM resources. Either pin TTS to CPU NEON or serialize them.
- CUDA arch mismatch. Orin Nano Super is
sm_87. Pre-built llama.cpp wheels typically don't include this architecture; build from source with-DCMAKE_CUDA_ARCHITECTURES=87.
When NOT to use a Jetson Orin Nano Super for this
If you only need to convert one book per month, a Mac mini you already own does it 10× faster — buy nothing. If you have an RTX-class GPU on a desktop, ditto. If you want a battery-powered portable that runs all day on a USB power bank, the Pi 5 (CPU only, no Hailo) is the better fit at lower power. The Jetson wins for dedicated, unattended, regular book-conversion duty.
Bottom line
The Jetson Orin Nano Super is the right SBC for fully-local PDF-to-audiobook pipelines as of 2026. It runs Qwen 2.5 3B at 22 tok/s and Kokoro 82M at 4.8× realtime — fast enough to convert a typical novel in under two hours at under 25W of sustained power. The Pi 5 + Hailo-8 combo is a viable alternative at lower price and lower power if you can tolerate ~20% slower turnaround and a slightly fussier software stack. The Pi 5 CPU-only path works but the 3.5-hour wall-clock per book makes regular use painful.
Pair the Jetson with a USB 3 SSD, a quiet 80mm fan, and a half-decent power supply, and you have a $340 appliance that turns your reading list into your listening list overnight.
Related guides
- Pi 5 + Hailo-8 audiobook pipeline review
- Best SBC for local AI in 2026
- Kokoro 82M voice quality comparison
- Qwen 2.5 3B vs Llama 3.2 3B for edge devices
- Faster-Whisper on Jetson: full review
Sources
- LocalLLaMA Pi 5 audiobook thread, April 2026
- Kokoro repo (hexgrad/kokoro) and voice-quality benchmark suite
- NVIDIA Jetson Orin Nano Super technical brief, October 2025
- llama.cpp PR #11201 (CUDA sm_87 perf tuning)
- Hailo Model Zoo Kokoro conversion notes (community port)
- Tesseract 5 ARM64 perf benchmarks (anandtech.com)
