Repository navigation
v2.5.1
Highlights
Much faster library scans
- A first scan is many times quicker. Your server now reads durations, chapters and tags itself, inside the server, instead of starting ffprobe once for every audio file. ffprobe is still there as the fallback: any file the server isn't sure of (an unusual MP3, FLAC with a cue sheet, an odd MP4 or MKV layout) goes to ffprobe, one file at a time, so nothing reads differently. Books are also written to the database in batches.
- The numbers, on an Intel N305 mini PC (8 cores, 15 GB) running Unraid, first scan with a cold cache:
- a real library of 1,165 books (9,165 files) on
/mnt/user: 198 s before, 7.5 s now (26x); - 20,000 generated books on the NVMe cache pool (
/mnt/cache): 270 s before, 29 s now; 5,000 books: 55 s before, 7 s now. - The real library gains the most because its books have several files each (about 8 on average); a library of single-file books gains less.
- a real library of 1,165 books (9,165 files) on
- The index is the same. On that real library, every duration, chapter start and end, title and tag matched what ffprobe gave, with 0 differences across 1,165 books and 56,673 chapters. A book's added date comes from the same place as before.
- Which ffprobe. The faster reading follows the rules of your ffprobe's release, so it needs FFmpeg 7.1 or 8.1. The Docker images (ours and LinuxServer.io's) have 8.1. The native Linux and Windows builds now download the FFmpeg 8.1 release build (before, they downloaded a development build, which the faster reading can't vouch for); see After updating. On macOS it depends on the release that was downloaded. With any other ffprobe (Ubuntu 24.04's 6.1, say) the server reads every file with ffprobe, exactly as in 2.5.0.
- Rescans with nothing changed were already quick and stay that way; this speeds up first scans and books whose files changed.
Faster everywhere else
- Smaller answers. The server now compresses its JSON answers for any player or browser that accepts it. A page of 200 books goes from 41 kB to 10 kB, and the console's 200-book list from 114 kB to 16 kB. Audio, covers, ebooks and backups are never compressed.
- Faster reads on Unraid's
/mnt/user. When the server's data folder is on an Unraid user share (the usualappdatadefault), the database is now read through a memory map. On the N305: Authors 79 ms to 9 ms, Health 157 ms to 60 ms, a page of 200 books 9.1 ms to 4.3 ms. A data folder on/mnt/cacheor any other disk is unchanged (it didn't gain enough there). It's automatic;database.mmapchanges it (After updating). - Lists stay quick while people listen. Before, every saved place emptied the server's ready-made answers, so in a household that was listening they were rarely ready. Listening, bookmarks, notes and the like now leave them alone, and any change to the library still refreshes them. With 5 people listening on a test server of 5,120 books, Series went from 14 ms to under 1 ms, and Home's recent shelf for someone with several shares from 19 ms to 6 ms.
- Saving is quicker, and the writes that matter most still go to disk at once: signing out, revoking a device or API key, changing a password, disabling a user, removing someone's library access or a share's folder, and pairing or unpairing a Bridge, so a power cut can't undo them.
- Health > Duplicates loads 50 groups at a time, with Show more, covers that load as you scroll, and a long group showing 10 copies with Show all n copies. On a library with 1,002 duplicate groups, the first one shows in about a quarter of a second instead of two thirds of a second, and you can reach all 1,002 (before, the list stopped at 500).
- The console keeps its thumbnails across reloads, in the browser, on plain http LAN addresses too. Reloading the Books grid no longer downloads its covers again (it was 387 kB a reload). The table asks for smaller thumbnails. Signing out clears them.
- An idle Bridge no longer writes to your server's database each time it checks for work.
The web player doesn't download books on its own
- In the web player, Automatic downloads > Download automatically now starts at Never. A browser can't tell Wi-Fi from mobile data, so starting a book used to download all of it alongside the stream (190 MB for one LibriVox book). A web player still on the old default (On Wi-Fi) moves to Never once; if you had also set Keep the next books ready above zero, your choice stays.
- The iPhone and Android apps are unchanged: they still download On Wi-Fi.
- The hint under each choice now describes that choice, and Settings uses the same label and says what On Wi-Fi means in a browser.
- The web player also does much less work while a book downloads: only the progress ring and size redraw.
Make read-alongs with a Bridge
- A read-along lines a book's ebook up with its narration, sentence by sentence. With Bridge v0.5.0 (below), a book with an ebook gets a Read-along card in the console, under Chapters, with Make read-along. The Bridge makes it with speech recognition only: no AI agent and no agent cost. If the Bridge already has the book's transcript (from detecting chapters, say), it reuses it.
- The confirmation says up front how long transcription can take on your Bridge. A read-along that lines up less than half the text (the wrong edition, say) is refused. The card says how much of the text it lines up, and that it's out of date when the ebook or the audio files change.
- With a v0.4.0 Bridge, the card says to update the Bridge to 0.5.0 (rather than calling it offline), and with no Bridge it says one is needed, with a link to Settings > Bridge.
- Following along in the player is not in this release. Read-alongs are made and checked in the console today; the player uses them in a later update.
See Making a read-along.
Fixes
- Offline, a downloaded book opens where you left off. Before, in the web player, a downloaded book opened offline could start at the beginning, and listening then could overwrite your place on the server once you were back online. It now keeps the server's place from when you downloaded it, and from every time it sees the server since, and a newer place from another device still wins. A book downloaded before this update picks its place up the next time the web player sees it online.
- Offline, Home and Up next show book titles instead of folder names, and the top card leads with a book that plays on this device; others say Not downloaded.
- In the web player, a download that can't work (no service worker, as when the browser blocks them) is refused at the start with the reason, instead of running to 100% and failing. A reload during a single-file book's download keeps the row with Retry, instead of forgetting it.
- Minutes left in the chapter read the same in the player and the sleep timer. Household shows in You at every screen width. In Chrome and Edge, listening is saved to History when you reload or leave the page mid-play.
- A cover replaced in a book's folder shows everywhere after the next scan, the console's saved thumbnails included, and so does removing a custom cover. An unchanged cover keeps its colour when a book is read again.
- Find shows (podcasts): the artwork for a whole page of results loads, instead of most of it failing with "busy" or "too many requests".
- Bridge jobs cancelled in the console say "Cancelled by an admin." instead of the Bridge's internal error text.
- In the console: setup continued in another browser reopens the folder step instead of marking it done without a library; Finish setup on the Bridge step counts as done, with no reminder; the Bridge setup's compose snippet lists every library folder again; a new library goes at the end of the list; Duplicates says "identical audio files" only when every copy is identical.
- From this release, an open console tab that can't open a page after an update reloads itself once, onto the new console.
- An ebook replaced in a book's folder shows its new size straight away, without waiting for a full scan.
- The first scan's log counts books after grouping disc folders.
Bridge v0.5.0
- Makes read-alongs for server 2.5.1 (above): a new job that transcribes the book (or reuses its transcript) and lines the ebook's text up with it. It never needs the agent.
- Transcripts are kept. Generate queued on a book whose chapter detection was waiting for an ASR worker carries on from the transcription already done, instead of starting again.
- Asking again right after a cancel works. A job queued straight after you cancel one waits up to 30 seconds for the cancelled one to stop, instead of refusing with "cancel it first".
- Detected chapters are checked against the audio file's size and modified time (with a 2-second allowance for SMB and FUSE), and a file briefly out of sight fails the job with a try-again message, keeping the work done.
- Lighter when idle. With 2,000 finished books, an idle Bridge used 4.45% of a CPU core; now 0.14%. The memory used to check a password is handed back about a second after you sign in. A running job reports every 30 seconds instead of 10, so a cancel can take up to about 30 seconds to reach it (the console shows it pending meanwhile).
- The setup checklist's agent step says in plain words what's wrong (too old, no CLI, the wrong backend, not signed in) and that the agent is for characters, recaps and descriptions. Right after pairing it says "checking the libraries..." rather than that the server has none. Jobs shows library names.
- A server that can't be reached is logged once, not every 10 seconds per job.
- Built with golang.org/x/net v0.62.0, for two advisories in its HTML parsing (GO-2026-6866, GO-2026-6860).
Update the image (ghcr.io/kodestar/audiosilo-bridge) to v0.5.0. Bridge v0.3.0 and later keep working with this server; making read-alongs needs v0.5.0.
After updating
- One database migration (0058, for read-alongs) runs on first start. Before it runs, the server copies your database into the backups folder (the newest 3 such copies are kept).
- Cover addresses change once, so the players and the console download each cover once more after the update.
- If an admin console tab was open during the update, reload it.
- New setting:
database.mmap(AUDIOSILO_DB_MMAP):auto(the default) maps the database only when the data folder is on an Unraid/mnt/usershare;offnever does.onmaps it anywhere, but on another FUSE filesystem (mergerfs, sshfs, rclone) or a network share an I/O error then stops the server instead of failing one request, so leave it onautounless you know your storage. - Native builds on Linux and Windows that downloaded ffprobe before replace it with the FFmpeg 8.1 release build in the background. Start-up never waits for it, and the faster scans begin from the next start. If the download fails, it tries again a day later. Docker users have nothing to do.
- In the web player, if you want books downloaded as you start them again, set Download automatically back to On Wi-Fi (in a browser that means on any connection).
- Pair read-alongs with Bridge v0.5.0. A v0.4.0 Bridge keeps working for everything else.
- There are no new apps with this release. The minimum app version is unchanged: the iPhone and Android apps keep working as before, and the player fixes above are in the web player bundled with this release.
Every change to the player API is additive, so existing iOS, Android and web players keep working. New: GET /libraries/{id}/readalong, readalong on a book from /item, readalong in /server, gzip-compressed JSON answers (1 KiB or more, for a request with Accept-Encoding: gzip, with Vary: Accept-Encoding, HEAD included), cover_version on admin books and version on POST /admin/covers entries, and limit/cursor paging with total and next_cursor on GET /admin/issues/duplicates (without limit it answers as before). cover_version values change once, as above. A Bridge heartbeat the server fails to save now answers 503, as a failed token check does.
Bundled web player 2.5.1:
- Automatic downloads off by default in the browser, a downloaded book resuming at its last place offline, titles on the offline Home, downloads refused up front when they can't work and kept with Retry after a reload, matching auto-download hints, and much less redrawing while a book downloads.
Native builds embed the web player; ffmpeg/ffprobe are found locally or
auto-downloaded on first use. Prefer Docker for advanced / multi-user
setups: ghcr.io/kodestar/audiosilo-server.
AudioSilo is free; sponsors keep it going:
GitHub Sponsors.