Coder Social home page Coder Social logo

stevenlol / simpleaudioindexer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aalireza/simpleaudioindexer

0.0 2.0 0.0 62.87 MB

Searching for the occurrence seconds of words/phrases or arbitrary regex patterns within audio files

License: Apache License 2.0

Python 100.00%

simpleaudioindexer's Introduction

SimpleAudioIndexer

Simple Audio Indexer: Index audio files and search for a word/phrase or match regex patterns

Build status Apache v2.0 License Documentation Status Python 2,7, 3,3, 3.4, 3.5, 3.6 supported Wheel ready

Description

This is a Python library and command-line tool that helps you search for a word or a phrase within an audio file (wav format). It also builts upon the initial searching capability and provides some [so-called] advanced searching abilities!

What can it do?

  • Index audio files and save/load the results.
  • Searching within audio files in multiple languages (default is English)
  • Define a timing error for your queries to handle discrepencies.
  • Define constraints on your queries, e.g. whether to include (sub/super)sequences, results with missing words etc.
  • Do full blown regex pattern matching!

Documentation

To read the documentation, visit here.

Installation

Open up a terminal and enter:

pip install SimpleAudioIndexer

You should also be installing sox and get IBM Watson API credentials. To do so, visit here.

There's a dockerfile included withing the repo if you're unable to do a native installation or are on a Windows system.

Uninstallation

Open up a terminal and enter:

pip uninstall SimpleAudioIndexer

Uninstalling sox, however, is dependent upon whether you're on a Linux or Mac system. For more information, visit here.

Command-line Usage

Prepare a directory that contains your audio files (wav format). Then

open up a terminal and enter:

sai -u USERNAME -p PASSWORD -d SRC_DIR -s "apple"

Replace USERNAME and PASSWORD with your IBM Watson's credentials and SRC_DIR with the absolute path to the directory you just prepared.

What comes after -s switch, is your query. With the command above, you just searched for "apple" inside those audio files!

You could also match a regex pattern like below:

sai -u USERNAME -p PASSWORD -d SRC_DIR -s " T[a-z][a-z] "

Which would search for three letters words starting with T.

You may also save and load the indexed data from the command line script. For more information, visit here.

Library Usage

>>> from SimpleAudioIndexer import SimpleAudioIndexer as sai

Afterwards, you should create an instance of sai

>>> indexer = sai(USERNAME, PASSWORD, SRC_DIR)

Now you may index all the available audio files by calling index_audio method:

>>> indexer.index_audio()

You could have a searching generator:

>>> searcher = indexer.search_gen(query="hello")
# If you're on python 2.7, instead of below, do >>> print searcher.next()
>>> print(next(searcher))
{"Query": "hello", "File Name": "audio.wav", "Result": [(0.01, 0.05)]

Now there are quite a few more arguments implemented for search_gen. Say you wanted your search to be case sensitive (by default it's not). Or, say you wanted to look for a phrase but there's a timing gap and the indexer didn't pick it up right, you could specify timing_error. Or, say some word is completely missed, then you could specify missing_word_tolerance etc.

For a full list, see the API reference here

You could also call search_all method to have search for a list of queries within all the audio files:

>>> print(indexer.search_all(queries=["hello", "yo"]))
{"hello": {"audio.wav": [(0.01, 0.05)]}, {"yo": {"another.wav": [(0.01, 0.02)]}}}

Finally, you could do a regex search!

>>> print(indexer.search_regexp(pattern=" [a-z][a-z][a-z] ")
{"are": {"audio.wav": [(0.08, 0.11)]}, "how": {"audio.wav": [(0.05, 0.08)]},
"you": {"audio.wav": [(0.11, 0.14)]}}

There are more functionalities implemented. For detailed explainations, read the documentation here.

Nice to implement in the future

  • Uploading in parallel
  • More control structures for searching (Typos, phoneme based approximation of words using CMU_DICT or NLTK etc.)
  • Searching for an unintelligible audio within the audio files. Possibly by cross correlation or something similar.

Contributing

Should you want to contribute code or ideas, file a bug request or give feedback, Visit the CONTRIBUTING file.

Authors

See also the list of contributors to this project.

License

This project is licensed under the Apache v2.0 license - see the LICENCE file for more details.

simpleaudioindexer's People

Contributors

aalireza avatar opyate avatar parhamp avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.