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.28.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: shira_audio-0.1.28.tar.gz
  • Upload date:
  • Size: 15.2 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.28.tar.gz
Algorithm Hash digest
SHA256 2cf47a171fa5b43e6c77e872246f29da1fc535c89a7596af8ae934fa602a5c0f
MD5 0f8eec3a6c1ac87348dcf1d15cfaf387
BLAKE2b-256 b2d2d8d28be2452875758384e8dbae1e995491046dc437405c23541ca1cdf661

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shira_audio-0.1.28-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.28-py3-none-any.whl
Algorithm Hash digest
SHA256 afa053c53a6ddc11237c371a16626dd2f9e15b4cab32105f18af6a8e21d8ad58
MD5 240f861f447729f84a566235a356de53
BLAKE2b-256 28df124d3c8b350094c9f996d75f4e7e4fbc22572fe0469d775c665243d8f981

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