All Projects → meyda → meyda-rs

meyda / meyda-rs

Licence: MIT License
This may become an audio feature extraction library for Rust.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to meyda-rs

spafe
🔉 spafe: Simplified Python Audio Features Extraction
Stars: ✭ 310 (+1966.67%)
Mutual labels:  dsp, audio-analysis
Ebur128
Implementation of the EBU R128 loudness standard
Stars: ✭ 43 (+186.67%)
Mutual labels:  dsp, audio-analysis
audio noise clustering
https://dodiku.github.io/audio_noise_clustering/results/ ==> An experiment with a variety of clustering (and clustering-like) techniques to reduce noise on an audio speech recording.
Stars: ✭ 24 (+60%)
Mutual labels:  dsp, audio-analysis
Essentia
C++ library for audio and music analysis, description and synthesis, including Python bindings
Stars: ✭ 1,985 (+13133.33%)
Mutual labels:  dsp, audio-analysis
MixingBear
Package for automatic beat-mixing of music files in Python 🐻🎚
Stars: ✭ 73 (+386.67%)
Mutual labels:  audio-features, audio-analysis
JDSP4Linux
An audio effect processor for PipeWire and PulseAudio clients
Stars: ✭ 192 (+1180%)
Mutual labels:  dsp
tsunami
A simple but powerful audio editor
Stars: ✭ 41 (+173.33%)
Mutual labels:  audio-analysis
math
Useful m-scripts for DSP (CIC, FIR, FFT, Fast convolution, Partial Filters etc.)
Stars: ✭ 15 (+0%)
Mutual labels:  dsp
murmur3
A rust implementation of murmur3
Stars: ✭ 48 (+220%)
Mutual labels:  rust-library
deepcurator
A convolutional neural network trained to recognize good* electronic music
Stars: ✭ 38 (+153.33%)
Mutual labels:  audio-analysis
rs-process-memory
A rust library that allows you to read/write into the memory of other processes
Stars: ✭ 63 (+320%)
Mutual labels:  rust-library
digitalocean
A prototype API for Digital Ocean.
Stars: ✭ 35 (+133.33%)
Mutual labels:  rust-library
DSP-ADAU1452
Open Hardware DSP Platform ADAU145x DSP supporting ADAU1452, ADAU1451, and ADAU1450 devices
Stars: ✭ 21 (+40%)
Mutual labels:  dsp
Audio-Digital-Processing
数字信号处理大作业:Matlab实现语音分析:加噪声,频谱分析,滤波器等等(内附报告)【Matlab for speech analysis: add noise, spectrum analysis, filter, etc】
Stars: ✭ 40 (+166.67%)
Mutual labels:  dsp
UA3REO-DDC-Transceiver
DDC/DUC SDR Tranceiver project
Stars: ✭ 93 (+520%)
Mutual labels:  dsp
DTMF-Decoder
A Java program to implement a DMTF Decoder.
Stars: ✭ 28 (+86.67%)
Mutual labels:  dsp
DAFx19-Gamelanizer
Accompanying material for the paper 'A Real-Time Audio Effect Plug-In Inspired by the Processes of Traditional Indonesian Gamelan Music'
Stars: ✭ 33 (+120%)
Mutual labels:  dsp
ws-ldn-12
ARM / STM32F7 DIY synth workshop
Stars: ✭ 62 (+313.33%)
Mutual labels:  dsp
aktors
Rust actor library with a bit of inspiration from Akka/Pykka
Stars: ✭ 44 (+193.33%)
Mutual labels:  rust-library
fixie-trie
Compact tries for fixed-width keys
Stars: ✭ 23 (+53.33%)
Mutual labels:  rust-library

meyda-rs

Build Status Code coverage

It's like meyda, but for Rust.

This project is heavily WIP and it's not wise to use it in production yet.

The plan is to initially provide a set of pure functions which operate on 64-bit float vectors, each vector being a frame of audio.

Later on, meyda-rs should support file loading, configuration, overlapping frames, etc. to approach the API of Meyda.

Usage

This example creates a 1024-sample frame of white noise, and calculates its features.

extern crate meyda;
extern crate rand;

use rand::Rng;

fn main() {
  const BUFFER_SIZE: usize = 1024;
  const SAMPLE_RATE: f64 = 44100.0;

  // create a vector of white noise
  let mut generator = rand::thread_rng();
  let signal: Vec<f64> = vec![0; BUFFER_SIZE]
    .iter()
    .map(|&_sample| generator.gen_range(-1_f64..1_f64))
    .collect();

  // compute features
  let rms = meyda::get_rms(&signal);
  let energy = meyda::get_energy(&signal);
  let zcr = meyda::get_zcr(&signal);
  // let power_spectrum = meyda::get_power_spectrum(&signal);
  let spectral_centroid = meyda::get_spectral_centroid(&signal);
  let spectral_flatness = meyda::get_spectral_flatness(&signal);
  let spectral_kurtosis = meyda::get_spectral_kurtosis(&signal);
  let spectral_rolloff = meyda::get_spectral_rolloff(&signal, SAMPLE_RATE, Some(0.95));
  let bark_loudness = meyda::get_bark_loudness(&signal, SAMPLE_RATE);

  println!("RMS is {} \n energy is {:?}, zcr is {:?},\n spectral centroid is {},\n spectral flatness is {},\n spectral kurtosis is {},\n spectral rolloff is {},\n Bark loudness is {:?}", rms, energy, zcr, spectral_centroid, spectral_flatness, spectral_kurtosis,
   spectral_rolloff, bark_loudness);
}

Development

Contributions are always welcome. The library should be test-driven and all new features should have accompanying tests.

Tests can be run with cargo test – each extractor function should have a test module in the same file, and should make use of meyda/gauge, which is submodule'd in /src/utils. The deserialized gauge data is provided by utils::test as a vector of TestDataSet structures.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].