kaj 342 Posted June 25 Posted June 25 TL;DR: I've been building a self-hosted system that adds Plexamp-style sonic analysis to an Emby music library — sonically similar tracks, track radio, "sonic adventures" between two songs, and auto-curated mixes — plus a companion Android app (liquidWave). It's fully self-hosted, nothing leaves your network, and I'm looking for a few testers who run Emby and don't mind a bit of setup. Why I built it I've always loved the Sonic Analysis feature in Plex/Plexamp. The problem is, I don't want to run Plex — I much prefer Emby for all of my other media — and there has never been an Emby solution for doing sonic analysis on the music in an Emby library. It's the one thing that kept pulling me back to Plex, and I didn't want it to. My music collection is old, big, and honestly not very well organised, and I'm lazy about fixing that. What I love about sonic analysis is that it lets me build listenable, automated playlists from a single starting point — a track, a mood, a vibe — without me having to tag and curate everything by hand. That's the whole reason I wanted this. So with the recent rise of AI tooling, it finally felt like the right time to actually attempt it. A note on how it was built I'll be upfront: I built this with heavy use of AI (Claude and Codex). I know a lot of people see "made with AI" and assume junk — but it genuinely isn't that easy. It takes a long time, and you essentially have to become a good project manager: guiding the AI, making the architecture calls, testing on real hardware, and dragging it back on track when it wanders. I've been working hard on this for a while. I built it for myself, from scratch, and deliberately didn't go looking at other apps — I just wanted to build in the features I actually use. One of those is audiobook support, because my wife loves audiobooks and that was important to her — so liquidWave also handles books (with durable resume) alongside music. What it does Sonically similar tracks / artists / albums — based on how the music sounds (neural audio analysis), not genre tags. Track Radio — an endless queue seeded from any track. Sonic Adventure — pick a start track and an end track, and it builds a journey that morphs from one to the other. Auto-curated Mixes — sonically consistent mixes built from your library; refresh any mix, or save it as a real playlist. Stations & Guest DJ — Library / Random Album / Decade radios, plus a Guest DJ that injects sonically matched tracks into your queue. Artist Mix Creator — pick an artist and the grid repopulates with sonically similar artists; keep adding the ones you want, then build a shuffled mix that spans the whole selection. A proper player — Media3/ExoPlayer, queue, shuffle/repeat, crossfade with an artwork cross-dissolve, an in-app equalizer, a Now Playing home-screen widget, Android Auto, and Google Cast to a Chromecast / Android TV / Shield. Offline buffer — the next few tracks in your queue are silently pre-cached in the background, so brief Wi-Fi blips don't interrupt playback. No manual download needed; you'll see "Offline buffer ready" in Now Playing when it's topped up. Audiobooks — browse by book/author, durable resume, speed control. Offline downloads — download any playlist or a whole audiobook (the original source files, no transcode) to your phone and browse + play it with no connection at all — on a plane, underground, wherever. Downloads get their own row on Home (with cover art) and a badge in your Playlists; an online/offline indicator shows the connection state; downloads are Wi-Fi-only by default. Audiobooks keep durable resume even fully offline, and your position syncs back to Emby the moment you reconnect. Managed under Settings → Downloads (Playlists and Audiobooks), with a one-tap "remove download" that leaves the item itself untouched. Themeable — follows your system dark/light theme automatically. Search across music, audiobooks, or everything. You can try it as a plain Emby player first Worth knowing: the sonic backend is optional. The app on its own is a fully working Emby music + audiobook player — you can install it, skip the coordinator entirely, and have a usable player straight away. Browse, full playback (queue, shuffle/repeat, crossfade, EQ, mini player, the Now Playing widget, Cast), audiobook resume + speed, Emby playlists, Recent Plays, offline playlist downloads, search, and the metadata Stations all work with nothing but your Emby server — and a downloaded playlist then plays with no server at all. The sonic features — Mixes, Track Radio, Similar, Sonic Adventure, Guest DJ, and the Artist Mix Creator — are what the backend adds on top. Without it they just stay empty; the app degrades gracefully rather than breaking. So you can get the player running on day one and stand up the analysis side at your leisure. Self-hosted and private — by design This is built privacy-first. It's your music, your server, your network. It's completely non-destructive. Your music and audiobook files are never changed, re-tagged, moved, or deleted — the analysis only ever reads (streams) your audio, and stores its results in its own separate database. The only things it ever writes are the normal playback state any Emby app writes (play counts / resume position), and a playlist only if you explicitly choose to save a mix. Everything runs on your own hardware — there's no account, no cloud service, no analytics, and no telemetry. Nothing about your library or listening is sent to me or anyone else. The audio analysis happens locally. The similarity index lives in a small file on your own machine and never leaves it. The only outbound connection the system makes is a one-time download of the neural model (~327 MB) on first run — after that the analysis stack can run fully air-gapped. It's designed to live inside your LAN (behind your VPN if you want remote access, exactly like you'd treat Emby itself). I'll be clear in the docs about not exposing it to the public internet. It runs on whatever you've got This was honestly one of the hardest parts to get right, so I'm a bit proud of it. The system is split into a tiny coordinator (runs anywhere — Windows, Linux, macOS, or a Docker container on an ARM NAS) and a separate worker that does the heavy analysis on whatever box has spare power. A GPU makes it faster but is not required — CPU works, it just takes longer. Your setup Coordinator Worker NAS (Synology/QNAP/ARM) runs Emby Docker on the NAS Your desktop/gaming PC One Windows box does everything On that box Same box (CPU or GPU) Linux server + a separate GPU rig On the server On the GPU box No GPU anywhere Either Any box, CPU-only — just slower To give you a real-world reference point: my own setup is Emby on an Intel N100 mini PC, music on a Synology NAS, and a gaming PC with an RTX 4070 Super as the worker. My library is around 25,000 tracks and the initial analysis took roughly 7 hours overnight — it would have taken days, maybe a week, running on the N100 alone, which is exactly why I designed it so the heavy work can be handed off to a separate machine. After that it's incremental — new imports are picked up automatically and done in the background. If you're running CPU-only or have a smaller library it'll scale accordingly; the benchmarks in the quickstart give per-track timings for both. You should never have to compile a native dependency — the painful cross-platform bits (PyTorch builds, optional Essentia, the model download) are handled by the defaults and Docker images. The honest state of it It's a private beta, and I want to be straight about that: Android only for now (iOS is a much later maybe). The first library analysis is a one-time slow job — roughly 10–15 s/track on a GPU, 20–30 s CPU-only. A few thousand tracks is an overnight run; after that it's automatic as you add music. A couple of known rough edges I'm still working on (e.g. on-device token encryption). The app is a debug build for now (installs fine by sideloading). It's running on my own gear, use it at home, casting, listening on my motorbike... every day and is genuinely usable — but you'll be early. Interested in testing? Before you put your hand up, have a read of the tester quickstart — it covers exactly what you'll need to stand up (coordinator + plugin + worker + Android app) and how long it takes. It's not a one-click install, but it's not deep either. You're a good fit if you run Emby, can install a plugin and restart your server, and don't mind following a checklist. A GPU helps with the initial library analysis but isn't required. If that looks manageable and you want in, reply to this post or send me a DM with a rough picture of your setup — Emby host OS, whether you have a GPU, and roughly how big your library is. I'll send you the files and repo access directly. I'm keeping this small to start so I can actually act on the feedback. Thanks for reading — this has been a real labour of love. Please try to refrain from criticism that it's built with AI... without AI this wouldn't exist Happy to answer any questions. 2 1
ebr 16464 Posted June 26 Posted June 26 On 6/24/2026 at 8:23 PM, kaj said: The app on its own is a fully working Emby music + audiobook player — you can install it, skip the coordinator entirely, and have a usable player straight away Will the opposite work? Can you just have the sonic analysis and then have the standard Emby apps use the results?
kaj 342 Posted June 26 Author Posted June 26 4 hours ago, ebr said: Will the opposite work? Can you just have the sonic analysis and then have the standard Emby apps use the results? Great question. The short answer is — partially. The coordinator's results don't feed back into the standard Emby apps automatically. Those apps only talk to Emby's own API and have no awareness of the coordinator, so the live sonic features (Track Radio, Similar tracks, Sonic Adventure, Guest DJ) need liquidWave on the other end to query it and drive playback. What does cross over: any mix you generate in liquidWave can be saved as a real Emby playlist with one tap — it then shows up in every Emby app straight away. So you could use liquidWave purely as a playlist-generation tool if you wanted; build your sonic mixes there, save them, and play them wherever you like. The coordinator also exposes interactive API docs at /docs (it's a FastAPI service), so if you're comfortable with a bit of DIY you could query it directly and do whatever you want with the results — but that's not a supported path, just an open door. The natural integration point, and I say this knowing you're part of the Emby team — if Emby were to expose a "similar tracks" or "instant mix" provider interface at the server level, the plugin could proxy those requests straight through to the coordinator and every Emby app would get the sonic features for free. That would be the clean version of what I've had to build a separate app to do. For now liquidWave is the intended front end, but it's a good point about the separation — and an interesting conversation if there's ever appetite on the Emby side for something like that.
kaj 342 Posted June 27 Author Posted June 27 Quick correction to my opening post: AudioMuse-AI has supported Emby since October 2025 and I should have known that before claiming there was no solution. Apologies for the inaccurate claim.
ebr 16464 Posted June 27 Posted June 27 16 hours ago, kaj said: So you could use liquidWave purely as a playlist-generation tool if you wanted But Android-only, right? 16 hours ago, kaj said: if Emby were to expose a "similar tracks" or "instant mix" provider interface at the server level Hmmm...
kaj 342 Posted June 27 Author Posted June 27 2 minutes ago, ebr said: But Android-only, right? Hmmm... Android first, if it works well then the plan is iOS too. Shouldn't be that hard to port the front end app
kaj 342 Posted Monday at 12:49 PM Author Posted Monday at 12:49 PM 19 hours ago, mirloc said: I love to give this a try. I'll DM you, thanks
ginjaninja 622 Posted Monday at 03:24 PM Posted Monday at 03:24 PM Hi @kaj, i am interested to test your solution, sounds interesting; im into music and the wife is into audiobooks. My GPU is a 4090 9800x3d and the library is 70K tracks. In case its of interest Ive been testing https://github.com/saitatter/pylrcget . In particular changing plain text lyrics into timed text lyrics where none exist with various amounts of success, maybe that's functionally adjacent to what your doing.
kaj 342 Posted Monday at 09:01 PM Author Posted Monday at 09:01 PM 5 hours ago, ginjaninja said: Hi @kaj, i am interested to test your solution, sounds interesting; im into music and the wife is into audiobooks. My GPU is a 4090 9800x3d and the library is 70K tracks. In case its of interest Ive been testing https://github.com/saitatter/pylrcget . In particular changing plain text lyrics into timed text lyrics where none exist with various amounts of success, maybe that's functionally adjacent to what your doing. Hey — thanks, would love to have you on the beta Your setup is honestly close to ideal for it. Music + audiobooks: both are covered. The sonic features (similar tracks, radio, "sonic adventures" that morph A→B, auto-mixes) run on your music library. Audiobooks live in their own Emby library and are deliberately kept out of the sonic analysis — so your wife's audiobooks still get full browse/playback/resume in the app, but spoken word never pollutes the music similarity. Best of both. That GPU is genuinely useful to me. The analysis is neural audio embedding (PANNs CNN14), and there's a CUDA worker that I've built but haven't been able to verify on real NVIDIA hardware yet — a 4090 would chew through a 70K library far faster than CPU. If you're up for it, confirming the worker actually picks up the card (it logs device=cuda on startup) would be a real help, and you'd get the fastest possible first scan out of it. Heads up that a 70K initial scan is a background marathon regardless — but it runs incrementally and new tracks get picked up automatically after. On pylrcget / timed lyrics: interesting project — I can see the appeal. It's adjacent in the "make your library richer" sense, but mechanically it's a different beast: emby-sonic analyses the audio itself (timbre, texture, sonic fingerprint) rather than anything in the lyrics/text. So not overlapping, but I like where your head's at. Can you send me your GitHub username and I'll DM you the onboarding bits — the Android app APK, the Emby plugin, and a quick-start for the coordinator + GPU worker. What Emby server version are you on, and is the 4090 box the one running Emby or a separate machine on the LAN?
kaj 342 Posted Monday at 09:24 PM Author Posted Monday at 09:24 PM (edited) Update — progress since the original post Quick update for anyone following along (and the folks who've already put their hand up — thanks!). Things have moved on a fair bit since I first posted: A web app is coming — so it won't be Android-only. This is the big one. The original post said Android-only with iOS "a much later maybe." That's changed: I'm building a browser-based web app (PWA) that'll run on iPhone, iPad, and desktop — anything with a browser. It works because the heavy lifting already lives in the backend; the app just asks it for playlists and streams audio straight from your Emby server. A couple of people mentioned they don't run Android phones, so this opens it up to everyone. It's early days, but it's actively in progress. Volume normalisation. One I didn't mention first time round: the app levels playback so a quiet track and a slammed modern master sit at a similar loudness (like Spotify/Tidal do), using loudness the backend measures during analysis. On by default, one toggle to turn off. On-device token encryption — done. I flagged this as a known rough edge last time. Your Emby session token on the phone is now encrypted at rest (Android Keystore), with a seamless migration so you stay logged in. Rolling into the next build. GPU acceleration for the analysis worker. If you've got an NVIDIA card, the worker can now use it (it logs device=cuda on startup) — a big help on a large library. How you enable it depends on the worker's OS: on Linux, the Docker CUDA worker (TORCH_VARIANT=cuda + --gpus all); on Windows, just run the worker natively with the CUDA PyTorch wheel (no Docker faff). Either way it auto-detects the card. CPU still works everywhere — it's just slower. Snappier + more polished. Faster library browsing (cached so reopening is instant and lighter on your server), the Sonic Adventure screen now scrolls as one smooth list, and various smaller fixes from real tester feedback. Marching toward a cleaner public release. Release-build hardening (smaller, optimised, properly signed APK) is now in place behind the scenes — groundwork for when this eventually goes public. Still looking for a few more testers — especially anyone with a GPU (I'd love more confirmation of the CUDA path on different cards) or a big library. Same deal as before: reply or DM with a rough picture of your setup (Emby host OS, GPU or not, library size) and I'll send you the files + repo access. Cheers — still very much a labour of love. It's a private GitHub project, so if you send me your GitHub username I can add you and send further info Edited Monday at 09:35 PM by kaj
kaj 342 Posted yesterday at 12:42 AM Author Posted yesterday at 12:42 AM Update — beta.5 & beta.6 (July 2026) A few things have landed since the last update: Web app is live. A browser-based PWA is now shipping alongside the Android app — Track Radio, Similar, Sonic Adventure, Mixes, and search all work from any browser (iPhone, iPad, desktop). No app install needed. Point your browser at http://<coordinator>:8765/app. Smarter search. Searching for an artist name in the Tracks tab now returns their full catalogue, not just songs with the artist name in the title. (Thanks to trickiegt from the beta for this one — submitted a PR for the same feature independently.) Older NVIDIA GPUs now supported. Pre-Ampere cards (anything that tops out at CUDA 12.4) weren't working with the default GPU image. There's now a :cu124 worker image for those, and the install script auto-detects your CUDA version and picks the right image automatically. Install script is smarter. ./install.sh now checks for Docker, detects your GPU and CUDA version, verifies the NVIDIA Container Toolkit, and selects the right worker image without any manual guessing. If something's missing it tells you what to fix. If you're already running it, grab beta.5 from the releases page for the app update, and re-run ./install.sh or docker compose pull && docker compose up -d for the Docker side. Still keen for more testers — especially anyone with a large library (50k+ tracks) or older GPU hardware. DM or reply here if you want in.
ginjaninja 622 Posted 20 hours ago Posted 20 hours ago How do i troubleshoot these sorts of errors using cuda via pip install torch torchvision torchaudio --index-url "https://download.pytorch.org/whl/cu130" 24 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3936001. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3937028. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3938055. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3939082. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3940109. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3941136. Note: Trying to resync... Note: Skipped 1024 bytes in input. 1
kaj 342 Posted 16 hours ago Author Posted 16 hours ago Thanks @ginjaninja Some real world bugs there and in the DM...I've replied in more detail in the DM and hopefully get you up and running more easily.
ginjaninja 622 Posted 4 hours ago Posted 4 hours ago (edited) Hi @kaj Controller Windows 11 RTX 4090, 9800x3d, Pcie 5 x 4 NVME (2GB+ sustained read/write), 1Gbit nic, 64Gbit Ram Emby server / music storage (mp3/flac various bit depths), SMB File shares, 5920K (6core, 12 thread) 1Gbit Nic, 16 GB Ram, PCIE 4x4 SSD (1GB+ sustained read). Spoiler Fri Jul 3 10:27:48 2026 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 610.62 KMD Version: 610.62 CUDA UMD Version: 13.3 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 4090 WDDM | 00000000:01:00.0 On | Off | | 0% 50C P5 36W / 450W | 2054MiB / 24564MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ Nvidia-smi baseline (1st time ever used tool dont know wether it reliable) 800MB, Worker_Batch 2= 2GB, Worker_batch_8= 2GB, 0% Utilisation, 30W) Im pasting these errors at the plugin end just i so dont loose sight of them, dont know if they are 'interesting'. Spoiler 19 skipped tracks 01. Concerto for Violin and Orchestra, op. 14 I. Allegro [WinError 10061] No connection could be made because the target machine actively refused it 01. Concerto no. 1 in D major for Horn, KV 412 I. Allegro [WinError 10061] No connection could be made because the target machine actively refused it 01. Confide in Me - Tame Impala Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1288435/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 01. Fuckin' in the Bushes [WinError 10061] No connection could be made because the target machine actively refused it 01. Fun for Me [WinError 10061] No connection could be made because the target machine actively refused it 01. Fun for Me (radio edit) Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1303921/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 05. Oboe Sonata in B flat major, RV 34 - Antonio Vivaldi [WinError 10061] No connection could be made because the target machine actively refused it 05. Ocean [WinError 10061] No connection could be made because the target machine actively refused it 05. Octopus's Garden Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1319783/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 06. Willow [WinError 10061] No connection could be made because the target machine actively refused it 06. Wires - Athlete [WinError 10061] No connection could be made because the target machine actively refused it 06. Wisdom [WinError 10061] No connection could be made because the target machine actively refused it 06. Wish I Had Not Said That - J.J. Cale [WinError 10061] No connection could be made because the target machine actively refused it 06. wish you were gay - Billie Eilish Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1288771/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 07. Church [WinError 10061] No connection could be made because the target machine actively refused it 07. Cinema Paradiso [WinError 10061] No connection could be made because the target machine actively refused it 07. Cinnamon Girl Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1300213/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 468. Six Pack Summer - Phil Vassar Given input size: (256x1x16). Calculated output size: (256x0x8). Output size is too small ABC — When Smokey Sings (The Miami mix) [WinError 10061] No connection could be made because the target machine actively refused it I can retest the fresh installation method, but at the moment the controller and worker and plugin seem to be Online/talking to each other (and i dont think the controller/worker/plugin have received updates beyond installation improvement), so im assuming i dont need to reinstall to keep testing? I am 50,000 tracks in according the andoid app config page, so i dont want to loose that if avoidable (with cost of electricity im £15 under :-)). Looking for advice on whether i should pause for investigation of the errors? problem with my content? problem with the chosen cuda wheel for my gpu? a 'you' problem in need of log capture my end? There was the plugin connectivity issue but does that account for all errors, i seem to be stably connected now (didnt change anything/reinstall anything, just came back to it over night). Should i do a full library scan or will that loose my analysis progress. Where is the scan data held, can i back it up as an optional part of testing? Not sure where to go. Full disclosure the Emby server was ingesting the music library during the analysis over a 1GB connection so that cant of 'helped'. the Emby ingestion has now finished. these errors look understandable/contained perhaps to inter component comms, maybe restarting a component during testing, nothing to see here? [WinError 10061] No connection could be made because the target machine actively refused it Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1300213/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 this error looks interesting..is it just a warning. Given input size: (256x1x16). Calculated output size: (256x0x8). Output size is too small Not sure what this one is about from the worker, or what to do with it. every now and then the worker runs throughs 100s of these. is my gpu broken...ive never done any cuda workload before..(to my knowledge). Bitrot perhaps? [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 3937028. 2026-07-03 10:02:41 [worker] results POST failed: Out of range float values are not JSON compliant; tracks will be re-leased. Seems to continue ok after Lower batch number anecdotally produce less errors but even batch 1 produces errors see below. The Cpu, network and GPU seem underutilised (only cursory glance), could a 10GB? Cache on the worker help with audio files at the other end of an SMB\Network? the program is moderately loading the network 20%-50% according to windows perfmon so thats perhaps as good as real world gets. Doh! Emby is being used to get the files. I have restarted Emby LOL, apologies that may account for flurry of 100s of errors (edit no still happening).. all the other errors are with emby consistently up. I wonder what this resync limit is "(maybe increasing resync limit could help)" Spoiler 2026-07-03 10:50:30.999 Debug LibraryService-0HNMORO1AFJKF:00000001: http/1.1 Response 200 to ::1. Time: 42ms. GET http://localhost:8096/Items/1266696/Download. 2026-07-03 10:50:31.956 Debug LibraryService-0HNMORO1AFJKG:00000001: http/1.1 GET http://localhost:8096/Items/1308433/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:31.956 Debug SqliteItemRepository: GetitemById Audio 1308433 \\x99\music\Pink Floyd\[1995] Pulse\D1_05. Keep Talking.flac 2026-07-03 10:50:32.522 Debug LibraryService-0HNMORO1AFJKG:00000001: http/1.1 Response 200 to ::1. Time: 566ms. GET http://localhost:8096/Items/1308433/Download. 2026-07-03 10:50:35.566 Debug LibraryService-0HNMORO1AFJKH:00000001: http/1.1 GET http://localhost:8096/Items/1288236/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:35.566 Debug SqliteItemRepository: GetitemById Audio 1288236 \\x99\music\Compilations\Triple J\[2015] Triple J Hottest 100, Volume 22\D1_05. King and Cross - Ásgeir.mp3 2026-07-03 10:50:35.676 Debug LibraryService-0HNMORO1AFJKH:00000001: http/1.1 Response 200 to ::1. Time: 110ms. GET http://localhost:8096/Items/1288236/Download. 2026-07-03 10:50:36.806 Debug LibraryService-0HNMORO1AFJKI:00000001: http/1.1 GET http://localhost:8096/Items/1272653/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:36.806 Debug SqliteItemRepository: GetitemById Audio 1272653 \\x99\music\Compilations\Now That’s What I Call Music!\Now That's What I Call Music 17\D1_05. Kingston Town - UB40.mp3 2026-07-03 10:50:36.935 Debug LibraryService-0HNMORO1AFJKI:00000001: http/1.1 Response 200 to ::1. Time: 129ms. GET http://localhost:8096/Items/1272653/Download. 2026-07-03 10:50:38.154 Debug LibraryService-0HNMORO1AFJKJ:00000001: http/1.1 GET http://localhost:8096/Items/1284992/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:38.154 Debug SqliteItemRepository: GetitemById Audio 1284992 \\x99\music\Compilations\The Best\[1999] The Best Love Songs... Ever!\D1_05. Kiss Me - Sixpence None the Richer.mp3 2026-07-03 10:50:38.205 Debug LibraryService-0HNMORO1AFJKJ:00000001: http/1.1 Response 200 to ::1. Time: 51ms. GET http://localhost:8096/Items/1284992/Download. 2026-07-03 10:50:39.166 Debug LibraryService-0HNMORO1AFJKK:00000001: http/1.1 GET http://localhost:8096/Items/1267493/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:39.167 Debug SqliteItemRepository: GetitemById Audio 1267493 \\x99\music\Compilations\Decades\80s\[2002] Like, Omigod! The '80s Pop Culture Box (Totally)\D01_05. Kool & The Gang - Celebration.mp3 2026-07-03 10:50:39.264 Debug LibraryService-0HNMORO1AFJKK:00000001: http/1.1 Response 200 to ::1. Time: 98ms. GET http://localhost:8096/Items/1267493/Download. 2026-07-03 10:50:40.276 Debug LibraryService-0HNMORO1AFJKL:00000001: http/1.1 GET http://localhost:8096/Items/1277288/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:40.277 Debug SqliteItemRepository: GetitemById Audio 1277288 \\x99\music\Compilations\Now That’s What I Call Music!\Now That's What I Call Music! 85\D1_05. La La La - Naughty Boy feat. Sam Smith.mp3 2026-07-03 10:50:40.391 Debug LibraryService-0HNMORO1AFJKL:00000001: http/1.1 Response 200 to ::1. Time: 115ms. GET http://localhost:8096/Items/1277288/Download. 2026-07-03 10:50:41.466 Debug LibraryService-0HNMORO1AFJKM:00000001: http/1.1 GET http://localhost:8096/Items/1272960/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:41.466 Debug SqliteItemRepository: GetitemById Audio 1272960 \\x99\music\Compilations\Now That’s What I Call Music!\Now That's What I Call Music! 10\D1_05. Labour of Love - Hue & Cry.mp3 2026-07-03 10:50:41.579 Debug LibraryService-0HNMORO1AFJKM:00000001: http/1.1 Response 200 to ::1. Time: 113ms. GET http://localhost:8096/Items/1272960/Download. 2026-07-03 10:50:42.676 Debug LibraryService-0HNMORO1AFJKN:00000001: http/1.1 GET http://localhost:8096/Items/1287319/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:42.676 Debug SqliteItemRepository: GetitemById Audio 1287319 \\x99\music\Compilations\TranceDance\[2017] Cream25\D1_05. Lady (Hear Me Tonight) - Modjo.mp3 2026-07-03 10:50:42.801 Debug LibraryService-0HNMORO1AFJKN:00000001: http/1.1 Response 200 to ::1. Time: 125ms. GET http://localhost:8096/Items/1287319/Download. 2026-07-03 10:50:43.878 Debug LibraryService-0HNMORO1AFJKO:00000001: http/1.1 GET http://localhost:8096/Items/1275400/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 2026-07-03 10:50:43.878 Debug SqliteItemRepository: GetitemById Audio 1275400 \\x99\music\Compilations\Now That’s What I Call Music!\Now That's What I Call Music! 40\D1_05. Lady Marmalade - All Saints.mp3 2026-07-03 10:50:44.004 Debug LibraryService-0HNMORO1AFJKO:00000001: http/1.1 Response 200 to ::1. Time: 126ms. GET http://localhost:8096/Items/1275400/Download. 2026-07-03 10:50:47.156 Debug LibraryService-0HNMORO1AFJKP:00000001: http/1.1 GET http://localhost:8096/Items/1315036/Download. Source Ip: ::1, UserAgent: python-httpx/0.28.1 Spoiler 026-07-03 10:02:29 [worker X670e] device=cuda 2026-07-03 10:02:34 [worker] batch done: stored=1 failed=0 2026-07-03 10:02:35 [worker] batch done: stored=1 failed=0 2026-07-03 10:02:36 [worker] batch done: stored=1 failed=0 2026-07-03 10:02:37 [worker] batch done: stored=1 failed=0 2026-07-03 10:02:39 [worker] batch done: stored=1 failed=0 2026-07-03 10:02:40 [worker] batch done: stored=1 failed=0 2026-07-03 10:02:41 [worker] batch done: stored=1 failed=0 Note: Illegal Audio-MPEG-Header 0x714fe080 at offset 102862. Note: Trying to resync... Note: Skipped 413 bytes in input. Note: Illegal Audio-MPEG-Header 0x714fe080 at offset 102862. Note: Trying to resync... Note: Skipped 413 bytes in input. Note: Illegal Audio-MPEG-Header 0x714fe080 at offset 102862. Note: Trying to resync... Note: Skipped 413 bytes in input. C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\librosa\core\pitch.py:103: UserWarning: Trying to estimate tuning from empty frequency set. return pitch_tuning( C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\lib\_function_base_impl.py:3023: RuntimeWarning: invalid value encountered in divide c /= stddev[:, None] C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\lib\_function_base_impl.py:3024: RuntimeWarning: invalid value encountered in divide c /= stddev[None, :] 2026-07-03 10:02:41 [worker] results POST failed: Out of range float values are not JSON compliant; tracks will be re-leased 2026-07-03 10:02:50 [worker] batch done: stored=1 failed=0 Spoiler Looks benign/handled. 2026-07-03 10:38:05 [worker] batch done: stored=8 failed=0 Warning: Xing stream size off by more than 1%, fuzzy seeking may be even more fuzzy than by design! Warning: Xing stream size off by more than 1%, fuzzy seeking may be even more fuzzy than by design! Warning: Xing stream size off by more than 1%, fuzzy seeking may be even more fuzzy than by design! Warning: Xing stream size off by more than 1%, fuzzy seeking may be even more fuzzy than by design! 2026-07-03 10:38:16 [worker] batch done: stored=8 failed=0 2026-07-03 10:38:28 [worker] batch done: stored=8 failed=0 2026-07-03 10:38:40 [worker] batch done: stored=8 failed=0 Spoiler 2026-07-03 10:43:15 [worker] batch done: stored=8 failed=0 C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\librosa\core\pitch.py:103: UserWarning: Trying to estimate tuning from empty frequency set. return pitch_tuning( C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\lib\_function_base_impl.py:3023: RuntimeWarning: invalid value encountered in divide c /= stddev[:, None] C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\lib\_function_base_impl.py:3024: RuntimeWarning: invalid value encountered in divide c /= stddev[None, :] 2026-07-03 10:43:24 [worker] results POST failed: Out of range float values are not JSON compliant; tracks will be re-leased 2026-07-03 10:43:42 [worker] batch done: stored=8 failed=0 C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\librosa\core\pitch.py:103: UserWarning: Trying to estimate tuning from empty frequency set. return pitch_tuning( C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\lib\_function_base_impl.py:3023: RuntimeWarning: invalid value encountered in divide c /= stddev[:, None] C:\Users\Nicholas Bird\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\lib\_function_base_impl.py:3024: RuntimeWarning: invalid value encountered in divide c /= stddev[None, :] 2026-07-03 10:43:52 [worker] results POST failed: Out of range float values are not JSON compliant; tracks will be re-leased Spoiler C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 1573305. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 1574332. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 1575359. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 1576386. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 1577413. Note: Trying to resync... Note: Skipped 1024 bytes in input. [C:\vcpkg\buildtrees\mpg123\src\-66150af195.clean\src\libmpg123\parse.c:wetwork():1389] error: Giving up resync after 1024 bytes - your stream is not nice... (maybe increasing resync limit could help). Note: Illegal Audio-MPEG-Header 0x00000000 at offset 1578440. what a emby sever service restart looks like Spoiler 2026-07-03 11:02:04 [worker] batch done: stored=8 failed=0 2026-07-03 11:02:15 [worker] batch done: stored=8 failed=0 2026-07-03 11:02:27 [worker] batch done: stored=8 failed=0 2026-07-03 11:02:39 [worker] batch done: stored=8 failed=0 2026-07-03 11:02:57 [worker] batch done: stored=3 failed=5 2026-07-03 11:03:08 [worker] batch done: stored=8 failed=0 2026-07-03 11:03:20 [worker] batch done: stored=8 failed=0 2026-07-03 11:03:31 [worker] batch done: stored=8 failed=0 NFO: 127.0.0.1:61119 - "POST /sonic/worker/claim HTTP/1.1" 200 OK results: track 1308045 failed to store: [WinError 10061] No connection could be made because the target machine actively refused it results: track 1294338 failed to store: [WinError 10061] No connection could be made because the target machine actively refused it results: track 1305684 failed to store: Server error '500 Internal Server Error' for url 'http://localhost:8096/Items/1305684/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500 results: track 1300427 failed to store: Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1300427/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 results: track 1290466 failed to store: Server error '503 Service Unavailable' for url 'http://localhost:8096/Items/1290466/Download' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503 INFO: 127.0.0.1:61138 - "POST /sonic/worker/results HTTP/1.1" 200 OK INFO: 127.0.0.1:61138 - "POST /sonic/worker/claim HTTP/1.1" 200 OK INFO: 127.0.0.1:61152 - "POST /sonic/worker/results HTTP/1.1" 200 OK Edited 3 hours ago by ginjaninja 1
kaj 342 Posted 44 minutes ago Author Posted 44 minutes ago Thanks @ginjaninja— really useful report, and that's a proper stress test (50k tracks while Emby's still ingesting, on a beast of a box ). Quick answers so you're not left hanging tonight: Safe to leave it running — these are all per-track errors, not a whole-scan failure. It'll keep chewing through the library. You won't lose progress. Analysis state lives in data/sonic.db (+ the FAISS index in data/), so stopping/retrying just picks up where it left off — and data/ is the folder to back up. Not your hardware — nothing here points at the 4090/9800X3D. It's a few software-handling gaps on our end. I've already pinned down what's going on: a handful of tracks with short/corrupt audio are tripping the analyser (the "output size too small" + mpg123 resync messages), and when that produces bad numbers we're re-queuing them instead of cleanly skipping — which is the noise you're seeing. The 10061/503s are mostly Emby being hammered while it ingests + streams at the same time. I'll fix the track-level handling (skip + mark bad tracks instead of retrying them forever) tomorrow and let you know when it's in a build. Keep it running in the meantime — the good tracks are all landing fine.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now