Ejemplo n.º 1
0
def _miniaudio_mp3read(path: str, start=0, end=0) -> np.ndarray:
    """
    Reads a mp3 files completely into an array

    start, end: if given, in seconds
    """
    import miniaudio
    decoded = miniaudio.mp3_read_file_f32(path)
    npsamples = np.frombuffer(decoded.samples, dtype='float32')
    sr = decoded.sample_rate
    if decoded.nchannels > 1:
        npsamples.shape = (decoded.num_frames, decoded.nchannels)
    if start > 0 or end != 0:
        startframe = int(start * sr)
        if end == 0:
            endframe = decoded.num_frames - 1
        elif end > 0:
            endframe = int(end * sr)
        else:
            endframe = int((decoded.duration + end) * sr)
        if endframe < startframe:
            raise ValueError(
                f"startframe ({startframe}) > endframe ({endframe})")
        npsamples = npsamples[startframe:endframe + 1]
    npsamples = npsamples.astype(float)
    return npsamples, sr
Ejemplo n.º 2
0
def read_mp3(path, resample_rate=16000):
    if isinstance(path, bytes):
        # If path is a tf.string tensor, it will be in bytes
        path = path.decode("utf-8")

    f = miniaudio.mp3_read_file_f32(path)
    # Downsample to target rate, 16 kHz is commonly used for speech data
    new_len = round(len(f.samples) * float(resample_rate) / f.sample_rate)
    signal = scipy.signal.resample(f.samples, new_len)

    # Normalize to [-1, 1]
    signal /= np.abs(signal).max()
    return signal, resample_rate
Ejemplo n.º 3
0
import scipy.signal
url = "https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3"
signal, resample_rate = librosa.load("file_example_MP3_700KB.mp3")
u = urlopen(url)

import miniaudio


import librosa
from src.features import plot_signal
import matplotlib.pyplot as plt
plot_signal(signal)
plt.show()
signal.max()

f = miniaudio.mp3_read_file_f32("file_example_MP3_700KB.mp3")
f.sample_rate
f.nchannels

f.samples

play(signal, 16000)
sd.stop()
len(signal)
873216/32000

pyaud = pyaudio.PyAudio()
srate=32000
stream = pyaud.open(format = pyaud.get_format_from_width(1),
                channels = 2,
                rate = srate,
Ejemplo n.º 4
0
def miniaudio_read_mp3(path):
    audio = miniaudio.mp3_read_file_f32(path.decode("utf-8"))
    return np.array(audio.samples, np.float32).reshape(
        (-1, audio.nchannels)), audio.sample_rate