【发布时间】:2019-08-28 05:26:39
【问题描述】:
我有一个名为'video.mp4' 的视频文件。我正在尝试从视频中分离一段音频并将其保存为可与其他 Python 模块一起使用的 wav 文件。我想用 MoviePy 做到这一点。
我向write_audiofile 函数发送参数,指定文件名、fps、nbyte 和编解码器。
按照 MoviePy AudioClip docs,我将编解码器指定为 ‘pcm_s32le’,用于 32 位 wav 文件。
from moviepy.editor import *
sound = AudioFileClip("video.mp4")
newsound = sound.subclip("00:00:13","00:00:15") #audio from 13 to 15 seconds
newsound.write_audiofile("sound.wav", 44100, 2, 2000,"pcm_s32le")
此代码生成一个.wav 文件,名为'sound.wav'。
打开Audacity中的音频文件
生成的文件 sound.wav 可以在 Audacity 中打开,但是当我尝试将其用作 wav 文件和其他 Python 模块时遇到问题。
播放pygame中的声音文件
import pygame
pygame.mixer.init()
sound=pygame.mixer.Sound("sound.wav")
第三行给出以下错误:
pygame.error: Unable to open file 'sound.wav'
使用 sndhdr.what() 确定声音文件的类型
import sndhdr
sndhdr.what("sound.wav")
sndhdr 方法返回none
.根据docs,发生这种情况时,该方法无法确定文件中存储的声音数据的类型。
使用 Google 语音识别读取文件
import speech_recognition as sr
r = sr.Recognizer()
audio = "sound.wav"
with sr.AudioFile(audio) as source:
audio = r.record(source)
text= r.recognize_google(audio)
print(text)
此代码在倒数第二行停止执行:
ValueError: Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC; check if file is corrupted or in another format
如果sndhdr.what() 无法将其识别为音频文件类型,为什么音频文件会在 Audacity 中打开?
如何将 MoviePy AudioClip 正确导出为 wav 文件?
【问题讨论】: