Skip to main content

A real-time audio recording & analyzing library

Project description

rcaudio : A Realtime Audio Recording & Analyzing Library

Introduction

rcaudio Rcaudio is a real-time audio analysis library that allows you to simply record audio through a microphone and analyze.

It supports real-time analysis of :

  • The raw audio data
  • Volume
  • Beat Information

For chinese documentation : 中文文档

Installation

pip install rcaudio

Usage

CoreRecorder

CoreRecorder is used to fetch raw data. When started, the audio data will be stored in the CoreRecorder.buffer.

from rcaudio import CoreRecorder
CR = CoreRecorder(
        time = 10, #How much time to record
        sr = 1000 #sample rate
        )
CR.start()
while True:
    if not CR.buffer.empty():
        x = CR.buffer.get()
        print('*'*int(abs(x)))

SimpleRecorder

In most cases, we use SimpleRecorder. For efficiency consideration, the SimpleRecorder should only be instantiated once.

This class can register several Analyzer.

When the function start() called, It will begin to record through microphone, and refresh the status of all the Analyzer

Analyzers

All class extended from BaseAnalyzer can be registered into SimpleRecorder. For example VolumeAnalyzer can get the current volume of the microphone.

import time
from rcaudio import SimpleRecorder,VolumeAnalyzer

SR = SimpleRecorder()
VA = VolumeAnalyzer(rec_time = 1)
SR.register(VA)
SR.start()
while True:
    print("VOLUME : ",VA.get_volume())
    time.sleep(1)

And beat analyzer can predict the beats from the music. (However, there will be some delay.)

SR = SimpleRecorder(sr = 20000)
BA = BeatAnalyzer(rec_time = 15, initial_bpm = 120, smooth_ratio = .8)
SR.register(BA)
SR.start()
while True:
    print(BA.block_until_next_beat())

A FeatureAnalyzer can use to generate all user defined acoustic features. Just override the data_process function. (Current function are the calculation of the Zero Crossing Rate.

SR = SimpleRecorder(sr = 1000)
FA = FeatureAnalyzer(refresh_time = 1)
SR.register(FA)
SR.start()
cpos = 0
while True:
	if len(FA.result) > cpos:
		print(FA.result[cpos])
		cpos += 1
	time.sleep(.01)

Some note

Most function has the time delay about 1-2 seconds. I did lot effort to let the BeatAnalyzer looked as it is real-time. However, for the FeatureAnalyzer, if the feature extraction function are too slow compare to the microphone recording, the dalay may become huge. Decrease the sample rates would be a solution, but better solution would be DIY a analyzer yourself.

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

rcaudio-0.0.2.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

rcaudio-0.0.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file rcaudio-0.0.2.tar.gz.

File metadata

  • Download URL: rcaudio-0.0.2.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.5

File hashes

Hashes for rcaudio-0.0.2.tar.gz
Algorithm Hash digest
SHA256 ab091d00009a519be5ca4bdf89b275d7e739c9236329ffe23a5799eb9e70f50c
MD5 9edf15e3bf4131162d138785a53ee5ed
BLAKE2b-256 fd2cf316ca8d5d60df45898c160f863d911bb09705b2e1aa2a87cfb6488cb66f

See more details on using hashes here.

File details

Details for the file rcaudio-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: rcaudio-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.5

File hashes

Hashes for rcaudio-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 42abc4e518d5d2aafa8fcf5743a5c9f2e2019fc9999e6c1ea16d98ce3f7f471f
MD5 7687344908dc6a0783cdf42e835b2386
BLAKE2b-256 ad24af76ccd4ddc217ade45e4fef044543b524403714dc01df760478d1a22fcf

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