Git Product home page Git Product logo

surfboard's Introduction

surfboard-logo

Documentation Status Build Status

A Python package for modern audio feature extraction

For information about contributing, citing, licensing (including commercial licensing) and getting in touch, please see our wiki.

Our documentation can be found here. Our paper can be found here.

Please join our Slack channel if you have questions or suggestions!

🏄 Installation 🏄

Install using pip

pip install surfboard

Alternatively,

  • Clone the repo: git clone https://github.com/novoic/surfboard.git
  • Navigate into the repo: cd surfboard
  • Install the repo: pip3 install .

Quickstart (be cooler than Bodhi in Point Break in 2 minutes)

Example 0: Compute features using Python

Given a set of components and an optional set of statistics to apply to the time-varying components, extract them using Python.

from surfboard.sound import Waveform
from surfboard.feature_extraction import extract_features

sound = Waveform(path='/path/to/audio.wav')

# Option 1: Extract MFCC and RMS energy components as time series.
component_dataframe = extract_features([sound], ['mfcc', 'rms'])

# Option 2: Extract the mean and standard deviation of the MFCC and RMS energy features over time.
feature_dataframe = extract_features([sound], ['mfcc', 'rms'], ['mean', 'std'])

# Option 3: Extract MFCC and RMS energy features as time series with non-default arguments.
mfcc_with_arg = {'mfcc': {'n_mfcc': 26, 'n_fft_seconds': 0.08, 'hop_length_seconds': 0.02}}
feature_with_args_dataframe = extract_features([sound], [mfcc_with_arg, 'rms'], ['mean', 'std'])

Example 1: Compute audio features from a folder of .wav files

Assume the following directory structure:

my_wav_folder/
│   swell.wav
│   cool_hair.wav
|   wave_crash.wav
|   ...

Using a .yaml config (see example_configs for examples), you can use the surfboard CLI to return a .csv file containing a set of features computed for every .wav file in my_wav_folder. You can optionally use multiple processes with the -j flag.

surfboard compute-features -i my_wav_folder -o cool_features.csv -F surfboard/example_configs/spectral_features.yaml -j 4

Example 2: Create a custom .yaml config

You can create a custom .yaml config in order to extract specific features from your audio data. You can also pick specific statistics to apply to the time-varying components. The set of available statistics is described in the Available statistics section below.

Take a peak at the example configs in surfboard/example_configs/. The package assumes a .yaml file with the following structure:

components:
  - mfcc
      n_mfcc: 26
  - log_melspec
      n_mels: 64
  
statistics:
  - mean
  - std

This config will compute the mean and standard deviation of every MFCC (13 by default but set to 26 here) and log mel-spectrogram filterbank (128 by default but 64 here) on every .wav file in my_wav_folder if called with the following command:

surfboard compute-features -i my_wav_folder -o epic_features.csv -F my_config.yaml

Example 3: Use the compute-components functionality

Sometimes you might want to retain the time axis of time-dependent components but still use the CLI. Given a .yaml config without a statistics section, you can. It will dump the components as .pkl file which can be loaded with pd.read_pickle.

surfboard compute-components -i my_wav_folder -o epic_features.pkl -F surfboard/example_configs/chroma_components.yaml

Example 4:

We have provided notebooks in notebook_tutorials for examples of how Surfboard can be used to extract features from audio and even to perform environmental sound classification.
Otherwise, here are some examples:

Define a waveform:

from surfboard.sound import Waveform
import numpy as np

# Instantiate from a .wav file.
sound = Waveform(path="/surf/in/USA/sound.wav", sample_rate=44100)

# OR: instantiate from a numpy array.
sound = Waveform(signal=np.sin(np.arange(0, 2 * np.pi, 1/24000)), sample_rate=44100)

Get the F0 contour:

import matplotlib.pyplot as plt
f0_contour = sound.f0_contour()
plt.plot(f0_contour[0])

Get the MFCCs:

mfccs = sound.mfcc()

Get different shimmers, jitters, formants:

shimmers = sound.shimmers()
jitters = sound.jitters()
formants = sound.formants()

Available components

You can take a look at COMPONENTS.md to see which components can be computed using Surfboard.

There is extensive documentation in the method docstrings in surfboard/sound.py. Please refer to those for more details on each individual feature (or to our documentation, alternatively).

Available statistics

A thorough list of the statistics implemented in Surfboard can be found in STATISTICS.md

Often, the components computed from the surfboard.sound.Waveform class have a time dimension, in which case they are represented as numpy arrays with shape [n_components, T]. For example a log mel spectrogram can be an array with shape [128, T]. We often want a fixed-length representation of variable length audio signals. Hence, we need to somehow aggregate the time dimension.

Following best practices, we have implemented a variety of statistics which take an array with shape [n_components, T] and return an array with shape [n_components,], aggregating each component along the time dimension with a statistic. These are implemented in surfboard/statistics.py.

Tests

Some very rudimentary tests have been implemented in the tests directory, to make sure that methods run successfully. Feel free to use them while developing new components/statistics.

FAQs

  • What are these components with _slidingwindow at the end? A lot of the components above are defined as floating point numbers computed from a sequence of arbitrary length. Sometimes, it makes more sense to see how these metrics change over time as a sliding window hovers over the waveform. This is what "sliding window" means here: we compute the component on a sliding window.
  • How do I know what data structure is returned by sound.{}? Try it out! Otherwise, take a look at our documentation, or the docstrings in surfboard/sound.py to see the returned types.
  • Can I use Surfboard on .mp3 files? Yes, but it might take a while longer than if you ran Surfboard on .wav files because of how LibROSA loads .mp3 files. For large jobs, we advise first converting .mp3 files to .wav files using ffmpeg.
  • Why are some of the rows returned in the .csv files obtained from the CLI full of NaNs? Sometimes, the feature extraction can fail either for a specific component/statistic, or for an entire audio file. This can have a variety of reasons. When such a failure occurs, we populate the dataframe with a NaN.
  • I am getting weird exceptions when extracting features. Is this okay? This is completely normal. Sometimes the extraction of a specific component/statistic can fail or raise warnings.

License

Surfboard is released under dual commercial and open source licenses. This is the open-source (GPL v3.0) version. See LICENSE for more details.

surfboard's People

Contributors

rlenain avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

surfboard's Issues

More robust pitch period entropy

The ppe method in the Waveform class currently produces large negative outliers.
We need to investigate this behaviour and potentially change it if we deem it to be undesirable.

surfboard requires old version of numba

According to setup.py, this is surfboard requires numba==0.48.0 because of an issue with Librosa 0.7.2 Can this requirement be relaxed with librosa 0.8.0?

I may be able to help test. Just tried extracting a few features with numba v 0.53.0 & librosa v 0.8.0 and no errors so far.

VSA and VAI

Given that you compute formant frequencies, it would be neat to implement methods that automatically calculate the VSA and VAI parameters, eg like in this paper. This project also talks about some stuff on pre-processing the data for this purpose and has some excellent visualizations.

TypeError: expected dtype object, got 'numpy.dtype[float64]' Error while extracting formants and Linear Spectral Frequeny

Hello there! I an Waqar Ahmad, i was trying to extract frequency formants from a simple librosa example audio file and got this error.
I am using google colab
python version 3.7
surfboard version 0.2.0
i am on ubuntu 20.04
my code is as following;

import surfboard
from surfboard.sound import Waveform

sound = Waveform(path= "/content/cough_noise_reduced.wav")
formant = sound.formants()
print(formant)

and it gives me the following error:


TypeError                                 Traceback (most recent call last)

<ipython-input-11-d498dfc58740> in <module>()
----> 1 formants = sound.formants()

3 frames

/usr/local/lib/python3.7/dist-packages/librosa/core/audio.py in lpc(y, order)
    900     util.valid_audio(y, mono=True)
    901 
--> 902     return __lpc(y, order)
    903 
    904 

TypeError: expected dtype object, got 'numpy.dtype[float64]'

i have also tried "get_formants()" method but it returns the same error, also it specifies numpy dtype as float64 in the error even though the waveform is dtype float32.
i have also tried feature extraction method it returns dataframe with a single Nan value.
any information on that will be appreciated, thank you.

TypeError: expected dtype object, got 'numpy.dtype[float64]'

In use
formants = wave.formants_slidingwindow() f1, f2 = formants[0], formants[1]

Will report an error

features = features_augmentation_selection(wave, wave_path, speaker) File "D:\程序\CGAN-main\units\data_utils.py", line 131, in features_augmentation_selection formants = wave.formants_slidingwindow() File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\sound.py", line 773, in formants_slidingwindow ) for f in ["f1", "f2", "f3", "f4"] File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\sound.py", line 773, in <listcomp> ) for f in ["f1", "f2", "f3", "f4"] File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\formants.py", line 91, in get_formants_slidingwindow return new_get_unique_formant(waveform, sample_rate, formant) File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\utils.py", line 42, in wrapper value = func(*new_args) File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\formants.py", line 89, in new_get_unique_formant return get_unique_formant(waveform, sample_rate, formant) File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\formants.py", line 64, in get_unique_formant dict_out = get_formants(waveform, sample_rate) File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\formants.py", line 51, in get_formants myformants = estimate_formants_lpc(waveform, sample_rate) File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\surfboard\formants.py", line 32, in estimate_formants_lpc lpc_rep = lpc(x_filt, 2 + int(sample_rate / 1000)) File "D:\Anaconda3\envs\CGAN-main\lib\site-packages\librosa\core\audio.py", line 882, in lpc return __lpc(y, order) TypeError: expected dtype object, got 'numpy.dtype[float64]'

Please help me, thank you

Hop time differential issue

Hi there!

Love the tech, this project has been incredibly useful in my work analysis conversational data however I recently came across an issue where I noticed that when I extracted features there were fewer returned than I expected. Looking at the closed issues on git hub I realised this was because of the adjustment you make in the background where you find the number of samples to the closest power of 2. This meant that in the background my hop length was adjusted from 10ms to around 11.6ms. This is less than ideal as the papers I've submitted thus far are now misrepresenting what I've done (fortunately none have gone to print and so this is fixable).

I would ask either that you provide the functionality to turn off this adjustment and keep the hop-value to what the user sets it to or you adjust the documentation to make clear what the hop-length parameter does and how surfboard interprets/adjusts it.

For anyone with a similar issue reading this a quick work around is to segment your data yourself by taking slices of the audio and having surfboard extract features from whatever window size you want yourself and then moving the window manually however this is very slow.

RuntimeError: No compatible cmake generator installed on this machine

Hi, I have following error message on windows 10 during pip install surfboard. Any way to fixit? Updating cmake doesn't help.

ERROR: Command errored out with exit status 1:
command: 'c:\users\пк\pycharmprojects\lungs-backend\venv\scripts\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\ПК\AppData\Local\Temp\
pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\setup.py'"'"'; file='"'"'C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede01476
8af2dca\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().
replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\ПК\AppData\Local\Temp\pip-record-u4s4z6hm\install-record.txt' --s
ingle-version-externally-managed --compile --install-headers 'c:\users\пк\pycharmprojects\lungs-backend\venv\include\site\python3.9\llvmlite'
cwd: C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca
Complete output (31 lines):
running install
running build
got version from file C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\llvmlite/_version.py {'version': '0.31.0', 'full': 'fe7d985f6421d87
f613bd414479d29d912771562'}
running build_ext
c:\users\пк\pycharmprojects\lungs-backend\venv\scripts\python.exe C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\ffi\build.py
-- Selecting Windows SDK version to target Windows 10.0.19042.
CMake Error at CMakeLists.txt:3 (project):
Failed to run MSBuild command:

    MSBuild.exe

  to get the value of VCTargetsPath:

    Не удается найти указанный файл



-- Configuring incomplete, errors occurred!
See also "C:/Users/РџРљ/AppData/Local/Temp/tmpt2d5fhn6/CMakeFiles/CMakeOutput.log".
Trying generator 'Visual Studio 14 2015 Win64'
Traceback (most recent call last):
  File "C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\ffi\build.py", line 168, in <module>
    main()
  File "C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\ffi\build.py", line 156, in main
    main_win32()
  File "C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\ffi\build.py", line 88, in main_win32
    generator = find_win32_generator()
  File "C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\ffi\build.py", line 84, in find_win32_generator
    raise RuntimeError("No compatible cmake generator installed on this machine")
RuntimeError: No compatible cmake generator installed on this machine
error: command 'c:\\users\\пк\\pycharmprojects\\lungs-backend\\venv\\scripts\\python.exe' failed with exit code 1
----------------------------------------

ERROR: Command errored out with exit status 1: 'c:\users\пк\pycharmprojects\lungs-backend\venv\scripts\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\
Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\llvmlite_699981f89b3446759ede014768af2dca\setup.py'"'"'; file='"'"'C:\Users\ПК\AppData\Local\Temp\pip-install-avso8t1w\l
lvmlite_699981f89b3446759ede014768af2dca\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setu
p; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\ПК\AppData\Local\Temp\pip-record
-u4s4z6hm\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\users\пк\pycharmprojects\lungs-backend\venv\include\site\python3.9\llvmlite' Check the lo
gs for full command output.

synergy surfboard <> Jina

Hello there, first of all great work!

I accidentally arrive here from one of the Python twitter accounts. I'm thinking about adding surfboard as one of audio feature extractors in Jina (https://github.com/jina-ai/jina). For some context, Jina is a universal neural search solution for all kinds of data, supporting audio2audio search is definitely in our scope. Perhaps we can co-work on some end-to-end demo as listed here (https://learn.jina.ai)?

Feel free to leave your comments and ideas in this thread.

AttributeError: module 'numpy' has no attribute 'long' when loading library

Hi there,
I tried calling Waveform from surfboard.sound and it told me that there was an error AttributeError: module 'numpy' has no attribute 'long'

np.long was said to be depreceated from Numpy 1.20.0 onwards, but the installation requires Numpy to be newer or equal to version 1.20.0 to avoid failed building wheels issue. Which means that there's inconvenience in downgrade Numpy in order to make the library at least.

Error on instalation

How i can solve this?

Installing collected packages: llvmlite, numba, toml, py, pluggy, iniconfig, future, colorama, attrs, atomicwrites, pyyaml, pytest, pysptk, pyloudnorm, PeakUtils, Cython, surfboard
Attempting uninstall: llvmlite
Found existing installation: llvmlite 0.35.0
Uninstalling llvmlite-0.35.0:
Successfully uninstalled llvmlite-0.35.0
Running setup.py install for llvmlite ... error
ERROR: Command errored out with exit status 1:
command: 'C:\Users\User\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\setup.py'"'"'; file='"'"'C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\User\AppData\Local\Temp\pip-record-x56_7uax\install-record.txt' --single-version-externally-managed --user --prefix= --compile --install-headers 'C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\Include\llvmlite'
cwd: C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6
Complete output (27 lines):
running install
running build
got version from file C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\llvmlite/_version.py {'version': '0.31.0', 'full': 'fe7d985f6421d87f613bd414479d29d912771562'}
running build_ext
C:\Users\User\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\ffi\build.py
Trying generator 'Visual Studio 14 2015 Win64'
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\ffi\build.py", line 168, in
main()
File "C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\ffi\build.py", line 156, in main
main_win32()
File "C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\ffi\build.py", line 88, in main_win32
generator = find_win32_generator()
File "C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\ffi\build.py", line 76, in find_win32_generator
try_cmake(cmake_dir, build_dir, generator)
File "C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\ffi\build.py", line 28, in try_cmake
subprocess.check_call(['cmake', '-G', generator, cmake_dir])
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 368, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 349, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.752.0_x64__qbz5n2kfra8p0\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] O sistema não pode encontrar o arquivo especificado
error: command 'C:\Users\User\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe' failed with exit code 1
----------------------------------------
Rolling back uninstall of llvmlite
Moving to c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages\llvmlite-0.35.0.dist-info
from C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages~lvmlite-0.35.0.dist-info
Moving to c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages\llvmlite
from C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages~lvmlite
ERROR: Command errored out with exit status 1: 'C:\Users\User\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\setup.py'"'"'; file='"'"'C:\Users\User\AppData\Local\Temp\pip-install-44tjgb61\llvmlite_91a93e84f71741878ab831770109c4c6\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\User\AppData\Local\Temp\pip-record-x56_7uax\install-record.txt' --single-version-externally-managed --user --prefix= --compile --install-headers 'C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\Include\llvmlite' Check the logs for full command output.

D:\Downloads\surfboard>

ERROR: Failed building wheel for pysptk

Hello, I have encounter an error when I was installing surfboard in Python 3.7.6 on Win 11. I am sure that I have the package 'wheel' installed and on the latest version. I tried to install 'pysptk' as well but I got the same error. I am wondering if there is anyway to fix this. Thanks!

----------------------------Error message-------------------------

ERROR: Command errored out with exit status 1:
   command: 'c:\users\daniel\anaconda3\python.exe' 'c:\users\daniel\anaconda3\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py' build_wheel 'C:\Users\Daniel\AppData\Local\Temp\tmpp_hp7bte'
       cwd: C:\Users\Daniel\AppData\Local\Temp\pip-install-rlxuvnus\pysptk_4a89ebc7a21b44c0bf96c5c1dba15fb9
  Complete output (80 lines):
  fatal: not a git repository (or any of the parent directories): .git
  running bdist_wheel
  running build
  running build_py
  -- Building version 0.1.20
  creating build
  creating build\lib.win-amd64-3.8
  creating build\lib.win-amd64-3.8\pysptk
  copying pysptk\conversion.py -> build\lib.win-amd64-3.8\pysptk
  copying pysptk\sptk.py -> build\lib.win-amd64-3.8\pysptk
  copying pysptk\synthesis.py -> build\lib.win-amd64-3.8\pysptk
  copying pysptk\util.py -> build\lib.win-amd64-3.8\pysptk
  copying pysptk\version.py -> build\lib.win-amd64-3.8\pysptk
  copying pysptk\__init__.py -> build\lib.win-amd64-3.8\pysptk
  creating build\lib.win-amd64-3.8\pysptk\example_audio_data
  copying pysptk\example_audio_data\arctic_a0007.wav -> build\lib.win-amd64-3.8\pysptk\example_audio_data
  copying pysptk\example_audio_data\COPYING -> build\lib.win-amd64-3.8\pysptk\example_audio_data
  running build_ext
  setup.py:58: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _CYTHON_INSTALLED = ver >= LooseVersion(min_cython_ver)
  Traceback (most recent call last):
    File "c:\users\daniel\anaconda3\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 363, in <module>
      main()
    File "c:\users\daniel\anaconda3\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 345, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "c:\users\daniel\anaconda3\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 261, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\build_meta.py", line 230, in build_wheel
      return self._build_with_temp_dir(['bdist_wheel'], '.whl',
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\build_meta.py", line 215, in _build_with_temp_dir
      self.run_setup()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\build_meta.py", line 267, in run_setup
      super(_BuildMetaLegacyBackend,
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\build_meta.py", line 158, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 136, in <module>
      setup(
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\__init__.py", line 155, in setup
      return distutils.core.setup(**attrs)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 148, in setup
      return run_commands(dist)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 163, in run_commands
      dist.run_commands()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 967, in run_commands
      self.run_command(cmd)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 986, in run_command
      cmd_obj.run()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\wheel\bdist_wheel.py", line 299, in run
      self.run_command('build')
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 986, in run_command
      cmd_obj.run()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\command\build.py", line 135, in run
      self.run_command(cmd_name)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 986, in run_command
      cmd_obj.run()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run
      _build_ext.build_ext.run(self)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 339, in run
      self.build_extensions()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\Cython\Distutils\old_build_ext.py", line 195, in build_extensions
      _build_ext.build_ext.build_extensions(self)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 448, in build_extensions
      self._build_extensions_serial()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 473, in _build_extensions_serial
      self.build_extension(ext)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 528, in build_extension
      objects = self.compiler.compile(sources,
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 327, in compile
      self.initialize()
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 224, in initialize
      vc_env = _get_vc_env(plat_spec)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\msvc.py", line 316, in msvc14_get_vc_env
      return _msvc14_get_vc_env(plat_spec)
    File "C:\Users\Daniel\AppData\Local\Temp\pip-build-env-07or21iq\overlay\Lib\site-packages\setuptools\msvc.py", line 270, in _msvc14_get_vc_env
      raise distutils.errors.DistutilsPlatformError(
  setuptools._distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
  ----------------------------------------
  ERROR: Failed building wheel for pysptk
Failed to build pysptk
ERROR: Could not build wheels for pysptk, which is required to install pyproject.toml-based projects

More robust crest factor

The crest_factor method in the Waveform class currently produces large positive outliers.
We need to investigate this behaviour and potentially change it if we deem it to be undesirable.

Error during the installation - Failed building wheel for llvmlite

Hi!
The installation fails with error "Failed building wheel for llvmlite"

` error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
Building wheel for llvmlite (setup.py) ... error
ERROR: Failed building wheel for llvmlite
Running setup.py clean for llvmlite
Successfully built audioread future
Failed to build llvmlite
Installing collected packages: pytz, llvmlite, urllib3, tqdm, tomli, threadpoolctl, six, setuptools, pyyaml, pycparser, pluggy, platformdirs, packaging, numpy, joblib, iniconfig, idna, future, exceptiongroup, decorator, Cython, charset-normalizer, certifi, audioread, attrs, scipy, requests, python-dateutil, pytest, numba, cffi, SoundFile, scikit-learn, resampy, pysptk, pyloudnorm, pooch, PeakUtils, pandas, librosa, surfboard
error: subprocess-exited-with-error

× Running setup.py install for llvmlite did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
Running setup.py install for llvmlite ... error
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> llvmlite `

I tried the installation with pip install surfboard --ignore-installed but that doesn't help.
I tried to uninstall llvmlite and run pip install surfboard doesn't work either.

I'm doing it on Google Colab which is:
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"

thanks for looking into it.

Do not pin dependency versions

Pinning dependencies of a library to an exact version (e.g., pandas==1.0.1) has many drawbacks, for example security issues. I see no reason why the dependencies have to be pinned for surfboard.

Maybe we can pin only the major versions, e.g. pandas>=1,<2.

Beginner questions

Hey guys, thanks for making this and increasing accessibility for everyone!

You say in your readme:

"This config will compute the mean and standard deviation of every MFCC (13 by default but set to 26 here) and log mel-spectrogram filterbank (128 by default but 64 here) on every .wav file in my_wav_folder if called with the following command"

My first question is: What does every MFCC mean? Does this mean that given a wave audio file, it will split it into 13 parts, then compute features for every part?

Second question: I want to use this to basically do something like word2vec but for music. I want to download sounds, or musical elements of different lengths, and basically extract vectors for how similar something sounds.

I want to do this to create a kind of collage. Given a piece of music, I want to split it up into little pieces, and reconstruct it with different sounds that are actually different but are similar in terms of elements like most dominant notes in the audio, and other audio qualities.

Do you think your library might come in handy in such a project?

Basically I'm unsure if feature extraction == sound2vec in this case.

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.