2024-04-19 19:05:51 发布
网友
我是python新手,我正在尝试获取上传的wav文件的FFT值,并返回文本文件每行中每帧的FFT(使用GCP)
使用scipy或librosa
我需要的帧速率是30fps
wave文件的采样率为48k
所以我的问题是
您可以使用pyaudio和callback来实现您正在做的任何事情
import pyaudio import wave import time import struct import sys import numpy as np if len(sys.argv) < 2: print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) sys.exit(-1) wf = wave.open(sys.argv[1], 'rb') # instantiate PyAudio (1) p = pyaudio.PyAudio() def callback_test(data, frame_count, time_info, status): frame_count =1024 elm = wf.readframes(frame_count) # read n frames da_i = np.frombuffer(elm, dtype='<i2') # convert to little endian int pairs da_fft = np.fft.rfft(da_i) # fast fourier transform for real values da_ifft = np.fft.irfft(da_fft) # inverse fast fourier transform for real values da_i = da_ifft.astype('<i2') # convert to little endian int pairs da_m = da_i.tobytes() # convert to bytes return (da_m, pyaudio.paContinue) # open stream using callback (3) stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(),# sampling frequency output=True, stream_callback=callback_test) # # start the stream (4) stream.start_stream() # # wait for stream to finish (5) while stream.is_active(): time.sleep(0.1) # # stop stream (6) stream.stop_stream() stream.close() wf.close() # close PyAudio (7) p.terminate()
请参考以下链接进行进一步研究:
https://people.csail.mit.edu/hubert/pyaudio/docs/#example-callback-mode-audio-i-o 和 Python change pitch of wav file
您可以使用pyaudio和callback来实现您正在做的任何事情
请参考以下链接进行进一步研究:
https://people.csail.mit.edu/hubert/pyaudio/docs/#example-callback-mode-audio-i-o 和 Python change pitch of wav file
相关问题 更多 >
编程相关推荐