From d0635c6592a2e787ca296e15241e7371a83ca55f Mon Sep 17 00:00:00 2001 From: Hui Zhang Date: Mon, 17 May 2021 19:50:29 +0800 Subject: [PATCH] using soxbinddings (#619) --- .gitignore | 3 +++ deepspeech/frontend/audio.py | 21 +++++++++++---------- tools/Makefile | 25 +++++++++++++++++++------ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 953cc28d..9b225057 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,9 @@ *.tar.gz .ipynb_checkpoints *.npz +*.done tools/venv tools/kenlm +tools/sox-14.4.2 +tools/soxbindings diff --git a/deepspeech/frontend/audio.py b/deepspeech/frontend/audio.py index a1c7df63..4488f5f2 100644 --- a/deepspeech/frontend/audio.py +++ b/deepspeech/frontend/audio.py @@ -21,6 +21,7 @@ import struct import numpy as np import resampy import soundfile +import soxbindings as sox from scipy import signal @@ -339,18 +340,18 @@ class AudioSegment(object): raise ValueError("speed_rate should be greater than zero.") # numpy - old_length = self._samples.shape[0] - new_length = int(old_length / speed_rate) - old_indices = np.arange(old_length) - new_indices = np.linspace(start=0, stop=old_length, num=new_length) - self._samples = np.interp(new_indices, old_indices, self._samples) + # old_length = self._samples.shape[0] + # new_length = int(old_length / speed_rate) + # old_indices = np.arange(old_length) + # new_indices = np.linspace(start=0, stop=old_length, num=new_length) + # self._samples = np.interp(new_indices, old_indices, self._samples) # sox, slow - # tfm = sox.Transformer() - # tfm.set_globals(multithread=False) - # tfm.speed(speed_rate) - # self._samples = tfm.build_array( - # input_array=self._samples, sample_rate_in=self._sample_rate).copy() + tfm = sox.Transformer() + tfm.set_globals(multithread=False) + tfm.speed(speed_rate) + self._samples = tfm.build_array( + input_array=self._samples, sample_rate_in=self._sample_rate).copy() def normalize(self, target_db=-20, max_gain_db=300.0): """Normalize audio to be of the desired RMS value in decibels. diff --git a/tools/Makefile b/tools/Makefile index 01228271..8ae06a20 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,13 +1,18 @@ PYTHON:= python3.8 -.PHONY: all clean kenlm +.PHONY: all clean -all: virtualenv kenlm +all: virtualenv kenlm.done sox.done soxbindings.done virtualenv: test -d venv || virtualenv -p $(PYTHON) venv touch venv/bin/activate -kenlm: +clean: + rm -fr venv + find -iname "*.pyc" -delete + rm -rf kenlm + +kenlm.done: # Ubuntu 16.04 透過 apt 會安裝 boost 1.58.0 # it seems that boost (1.54.0) requires higher version. After I switched to g++-5 it compiles normally. apt install -y build-essential cmake libboost-system-dev libboost-thread-dev libboost-program-options-dev libboost-test-dev libeigen3-dev zlib1g-dev libbz2-dev liblzma-dev @@ -15,8 +20,16 @@ kenlm: test -d kenlm || wget -O - https://kheafield.com/code/kenlm.tar.gz | tar xz mkdir -p kenlm/build && cd kenlm/build && cmake .. && make -j4 && make install cd kenlm && python setup.py install + touch kenlm.done -clean: - rm -fr venv - find -iname "*.pyc" -delete +sox.done: + apt install -y libvorbis-dev libmp3lame-dev libmad-ocaml-dev + test -d sox-14.4.2 || wget https://nchc.dl.sourceforge.net/project/sox/sox/14.4.2/sox-14.4.2.tar.gz + tar -xvzf sox-14.4.2.tar.gz -C . + cd sox-14.4.2 && ./configure --prefix=/usr/ && make -j4 && make install + touch sox.done +soxbindings.done: + test -d soxbindings || git clone https://github.com/pseeth/soxbindings.git + source venv/bin/activate; cd soxbindings && python3 setup.py install + touch soxbindings.done