DeepSqueak v3: A MATLAB Pipeline for Rodent Ultrasonic Vocalization Detection
DeepSqueak v3: Using Machine Vision to Accelerate Bioacoustics Research
At a glance
- What is it?
- DeepSqueak turns spectrograms of rodent recordings into detected and clustered ultrasonic vocalizations using MATLAB and trained neural networks. It is a fit for labs already inside the MATLAB ecosystem and a poor fit for anyone who needs a headless, scriptable pipeline.
- Who is it for?
- Adopt DeepSqueak if your lab already runs MATLAB, your recordings are rodent USVs, and you want a point-and-click path from audio to detected calls plus clustered call types. Do not adopt it if you need a headless pipeline that runs on a scheduler without a MATLAB licence, or if your species is not covered by an existing trained network and nobody on the team can hand-box calls to build one.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 160 days ago.
- What is it written in?
- Mainly MATLAB, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem DeepSqueak addresses: scoring rodent calls by hand
Rodent ultrasonic vocalizations sit above the range of human hearing, so researchers cannot score them by listening. The conventional route is to generate spectrograms, then have a person draw boxes around each call in a viewer, one file at a time. That work does not scale, and inter-rater differences accumulate across a study. DeepSqueak's stated aim is to accelerate bioacoustics research by applying machine vision to the spectrogram image rather than to the raw waveform. The repository topics list mice, rats and usv, so the target user is a rodent behavioral or neuroscience lab. The README also points to a manuscript in Nature (Neuropsychopharmacology) and a wiki, which is where the operating instructions live. The project is MATLAB code with a GUI, published under BSD-3-Clause, and the most recent release in the supplied material is v3.1 from February 2025, with a v3.2 upgrade list in the README.
How the detection and clustering pipeline is put together
The architecture is two-stage, and the README makes the split explicit. Stage one is detection. As of v3.1 the detector is a YOLO V2 based detection architecture, and the README describes v3.2 as adding new high precision neural networks, automatic removal of horizontal noise bands, and improved image scaling bound to trained networks. The input to that detector is the spectrogram image, not the audio samples, which is why the project frames itself as machine vision. Stage two is grouping. The v3.1 notes describe contour invariant clustering with variational auto encoders and a new clustering GUI. Contour invariance matters here because the same call type can appear at different pitches and durations; the encoder is meant to represent shape rather than absolute position. The practical consequence is that a user gets two outputs: a set of detected call events with time and frequency bounds, and a set of clusters that group those events into putative call categories. The README also states that existing networks can be retrained with your own recordings, and that you can start from scratch by hand boxing calls and training a new species detector. Those two sentences describe the intended escape hatch when a pretrained network does not fit your data.
What the v3.1 and v3.2 upgrade notes actually change
The upgrade lists are short, and it is worth reading them as a record of where the project has been weak. V3.1 replaced the detection architecture with YOLO V2, added navigation across entire audio files so a user can refine detections or add new boxes without reopening files, and introduced the variational autoencoder clustering with its own GUI. V3.2 lists three items: high precision networks, automatic removal of horizontal noise bands, and image scaling that is bound to trained networks. The noise band item is the telling one. Horizontal bands in a spectrogram come from constant-frequency interference, and their removal is a preprocessing concern that has to be handled before a detector sees the image. The scaling item suggests that earlier versions could feed the network images at a scale the network was not trained on, which would degrade detection without any obvious error message. Both items are corrections to the image pipeline rather than new science. A lab that ran an older version and saw spurious detections along a fixed frequency line should read the v3.2 notes as the fix for that symptom.
Getting it running: MATLAB, the File Exchange listing and the wiki
The README does not contain installation commands. It links to a wiki, a Gitter channel, a YouTube video from Verge Science, and a MATLAB File Exchange listing (file exchange ID 71421). That is the whole of the supplied setup material, and it means the concrete steps live outside the README. What can be stated from the repository itself: the primary language is MATLAB, the default branch is master, and the licence is BSD-3-Clause. A user therefore needs a MATLAB installation to run the code, and the File Exchange listing is the distribution channel the project points to. The GUI is central to the documented workflow, which is why the v3.1 notes describe navigating entire audio files to refine detections and a separate clustering GUI. Anyone evaluating this should treat the wiki as required reading before judging the tool, because the README alone will not get a session started. No configuration keys, command line invocations or environment variables appear in the supplied README, so none can be reported here.
Where DeepSqueak is the wrong tool
The dependency on MATLAB is the first constraint, and it is not incidental. MATLAB is commercial software, so a lab without a licence cannot run DeepSqueak at all, and a lab that wants to run detection across a compute cluster needs licences on that cluster. The GUI-centric workflow is the second constraint. The v3.1 notes describe navigating audio files and drawing boxes by hand, which is a good fit for interactive review and a poor fit for unattended batch processing on a scheduler. There is no evidence in the supplied material of a documented command-line entry point. The third constraint is species coverage. The README's own escape hatch, hand boxing calls and training a new species detector, is a labeling project in disguise, and it assumes someone on the team can recognize the calls well enough to draw boxes around them. If your recordings come from a species outside the mice and rats the topics list, or from a preparation with unusual noise, budget for that labeling work. Finally, the release history in the supplied material is uneven: 2.6.1 in 2019, 2.6.2 in 2021, then v3.1 in 2025. A lab that needs a predictable upgrade cadence should weigh that gap.
How DeepSqueak differs from DeepLabCut and similar tooling
The nearest comparison in this space is DeepLabCut, which is also a deep learning tool built for behavioral neuroscience labs and also commonly used from a GUI. The difference is in what gets tracked. DeepLabCut estimates the pose of an animal in video frames: it outputs coordinates of body parts over time. DeepSqueak operates on the spectrogram of an audio recording and outputs detected call events plus cluster assignments. One works on pixels of a behaving animal, the other on pixels of a time-frequency representation of sound. That distinction drives everything downstream. A DeepSqueak user's main preprocessing question is spectrogram generation and noise band removal, which is exactly what the v3.2 notes address. A pose estimation user's main questions are camera calibration and frame labeling. They are not substitutes, and a lab studying vocalizations during social behavior may end up running both, which means maintaining two Python or MATLAB environments and two sets of trained models.
Licence terms and the cost of staying current
DeepSqueak is released under BSD-3-Clause, which permits use, modification and redistribution provided the copyright notice and licence text are retained and the authors' names are not used to endorse derivative work without permission. The README carries a copyright line naming Ruby Marx, Kevin Coffey, Robert Ciszek and Leonardo Lara-Valderrábano. Two practical points follow. First, if you modify the code and ship it, the BSD-3-Clause notice has to travel with it. Second, the licence covers the code, not any pretrained network weights or the recordings used to train them; the supplied material does not state terms for the models, so that is a question to raise with the authors rather than assume. On maintenance cost, the visible work between releases is substantial rather than incremental. V3.1 swapped the detector architecture and added a clustering method, and v3.2 changed preprocessing and image scaling. A lab that has trained custom networks on an older version should expect to retrain or revalidate after such changes, because a detector trained on differently scaled images is exactly the failure mode the v3.2 notes describe. The supplied material does not state whether old network files remain loadable in v3.2, so that compatibility question needs an answer from the wiki or the Gitter channel before an upgrade is scheduled.
Editorial conclusion
Adopt DeepSqueak if your lab already runs MATLAB, your recordings are rodent USVs, and you want a point-and-click path from audio to detected calls plus clustered call types. Do not adopt it if you need a headless pipeline that runs on a scheduler without a MATLAB licence, or if your species is not covered by an existing trained network and nobody on the team can hand-box calls to build one. Before committing, verify your MATLAB release against the toolbox requirements in the wiki, confirm that a pretrained network exists for your species and recording setup, and check that your GPU or CPU can run the detection step at a rate your recording volume allows.
Community notes