Skip to main content

audio search/retrieval library

Project description

shira 🔖🎧

A simple audio search/retrieval library. (wip)

This is the audio version of ripple. Search through audio files/data with text queries or audio samples.
It's meant to be an neural encoded version of Shazam, but might just be for small scale/local usage.

Methodology

It's basically a semantic search library for audio.

The local audio data/files are indexed and embeddings are generated(with CLAP), then a FAISS vector index is created.
The files are retrieved based on cosine similarity between embeddings. (it could also be adapted for audio recommendation).

This process makes use of contrastively pretrained audio-language model, CLAP(like OpenAI CLIP for audio), specifically LAION's laion/larger_clap_music_and_speech checkpoint/model.

usage

  • Install the library
pip install shira-audio
  • For text-based search
from shira import AudioSearch, AudioEmbedding

embedder = AudioEmbedding(data_path='.') # init embedder class
audio_data_embeds = embedder.index_files() # create embeddings and index audio files

neural_search = AudioSearch() # init semantic search class

text_query = 'classical music' # text description for search

# get k similar audio w/probability score pairs 
matching_samples, scores = neural_search.text_search(text_query, audio_data_embeds, k_count=5)

matching_samples['path'][0], scores[0] # get file path for the top sample

Or you could use it from your terminal:

# -t for text query 
# --dir for [optional] target directory 
shira_text -t instrumental --dir downloads/music
  • For audio-based search
from shira import AudioSearch, AudioEmbedding

embedder = AudioEmbedding(data_path='downloads') # init embedder class
audio_data_embeds = embedder.index_files() # create embeddings and index audio files

neural_search = AudioSearch() # init semantic search class

audiofile = 'beethoven_moonlight_sonata.mp3' # audio file for reference

# get k similar audio w/probability score pairs 
similar_samples, scores = neural_search.audio_search(audiofile, audio_data_embeds, k_count=4)

similar_samples['path'][0], scores[0] # get file path for the top sample

Or for terminal/cli use:

# -f reference audio file path 
# --dir for [optional] target directory 
shira -f sprinter.mp3 --dir downloads/

Acknowldgements

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shira_audio-0.1.29.tar.gz (198.4 kB view details)

Uploaded Source

Built Distribution

shira_audio-0.1.29-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file shira_audio-0.1.29.tar.gz.

File metadata

  • Download URL: shira_audio-0.1.29.tar.gz
  • Upload date:
  • Size: 198.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for shira_audio-0.1.29.tar.gz
Algorithm Hash digest
SHA256 310073b73d621230c90b48172f1c5a4537dc5c1dd9b2a00507b1a9ab4c124b45
MD5 673ae6aed4d7005202fcd5b87fe386d6
BLAKE2b-256 d57ea30463fd54bc23addd58da43b3f996d41fb6f1b5dada524236649d174b4a

See more details on using hashes here.

File details

Details for the file shira_audio-0.1.29-py3-none-any.whl.

File metadata

  • Download URL: shira_audio-0.1.29-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for shira_audio-0.1.29-py3-none-any.whl
Algorithm Hash digest
SHA256 ef1cc1984a131820c07894690ad71d5dc712feda9c6ededce146ecf7974195a3
MD5 288ae29ba36497568e3c86d33ccbc62a
BLAKE2b-256 cb51619d6735f75bd2685edf2c43bdd129d71b840a51db81d6c76f019ac8d8a8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page