Вывод звука только статический - PullRequest
0 голосов
/ 22 мая 2019

ниже - это код, который принимает аудиофайл, применяет к нему фильтр и затем воспроизводит звук пользователю.Раздел «Создать аудио» кода должен взять то, что было воспроизведено в Python, и вывести аудиофайл.Когда я слушаю выводимый аудиофайл, он представляет собой кучу статических звуков, и я не уверен, что может быть причиной этого

from io import BytesIO
import tempfile
import requests
import librosa
import numpy as np
import scipy.signal as sg
import pydub
import matplotlib.pyplot as plt
from IPython.display import Audio, display
import wave
%matplotlib inline

def speak(voice):
    audio = pydub.AudioSegment.from_mp3(BytesIO(voice))    #takes audiofile     and creates a mutable file

    with tempfile.TemporaryFile() as fn:
        wavef = audio.export(fn, format='wav')
        wavef.seek(0)                            
        wave = wavef.read()

    x = np.frombuffer(wave, np.int16)[24:] / 2.**15     #creates a numpy array by taking info of audio from temp memory. 
    return x, audio.frame_rate


def play(x, fr, autoplay=False):
    display(Audio(x, rate=fr, autoplay=autoplay))




voice = open("pathToMp3", "rb").read()  

x, fr = speak(voice)
play(x, fr)

b, a = sg.butter(4, 500. / (fr / 2.), 'low')   
x_fil = sg.filtfilt(b, a, x)
play(x_fil, fr)


#create audio file
wav_out = wave.open("output2.wav", "wb")
wav_out.setnchannels(2) # stereo has 2 channels
wav_out.setframerate(44100)
wav_out.setsampwidth(2)

wav_out.writeframes(x_fil.tobytes())
wav_out.close()
...