背景
想使用moviepy中的VideoFileClip读取video中的audio,并将audio的值读出。
网上多数方法都是先将读出的audio保存到本地,然后用torchaudio去读,如下:
from moviepy.editor import VideoFileClip
import torchaudio
video = VideoFileClip('xxx.mp4')
audio = video.audio
audio.write_audiofile('extracted_audio.wav', fps=16000)
waveform, sr = torchaudio.load('extracted_audio.wav')
我们想不保存到本地,直接在线读出audio的值。
方法
VideoFileClip对象的audio方法继承自AudioClip,AudioClip中有to_soundarray方法可以读出audio的array值。
from moviepy.editor import VideoFileClip
import torch
video = VideoFileClip('xxx.mp4')
audio = video.audio
audio = audio.set_fps(16000)
waveform = audio.to_soundarray()
waveform = torch.from_numpy(waveform)
waveform = waveform.T
可以验证,这种方式读出的值与使用torchaudio读取xxx.wav的值是一致的。