我尝试使用 pydub、mutagen 和 eyed3 来尝试访问我使用 pyttsx3 创建的 mp3 文件的长度。然而,我的机器反复遇到类似的问题,告诉我它无法访问 mp3,在我尝试访问它的指定路径中找不到该文件,尽管我确认它当时确实存在它到达有问题的代码行。这是我尝试使用 eyes3:
original_clip = VideoFileClip(original_video_path)
voiceoverDirTitle = "VoiceoversTitle"
filePath = f"{voiceoverDirTitle}/{id}.mp3"
engine = pyttsx3.init()
engine.save_to_file(title, filePath)
engine.runAndWait()
script_dir = os.path.dirname(os.path.abspath(__file__))
voiceoverDirTitle = "VoiceoversTitle"
filePathAbsolute = os.path.join(script_dir, voiceoverDirTitle, f"{id}.mp3")
print(filePathAbsolute)
exists = os.path.isfile(filePathAbsolute)
print(exists)
audio = eyed3.load(filePathAbsolute)
直到最后一行代码,一切看起来都很有希望,当它向我抛出此错误消息时:
AttributeError: 'NoneType' object has no attribute 'info'
这是我尝试使用 pydub:
original_clip = VideoFileClip(original_video_path)
voiceoverDirTitle = "VoiceoversTitle"
filePath = f"{voiceoverDirTitle}/{id}.mp3"
engine = pyttsx3.init()
engine.save_to_file(title, filePath)
engine.runAndWait()
script_dir = os.path.dirname(os.path.abspath(__file__))
voiceoverDirTitle = "VoiceoversTitle"
filePathAbsolute = os.path.join(script_dir, voiceoverDirTitle, f"{id}.mp3")
print(filePathAbsolute)
exists = os.path.isfile(filePathAbsolute)
print(exists)
audio = AudioSegment.from_mp3(filePathAbsolute)
duration_seconds = len(audio) / 1000
它返回的错误:
FileNotFoundError: [WinError 2] The system cannot find the file specified
我一开始怀疑这是一个 ffmpeg 问题,但是当我尝试“pip install ffmpeg”时,它说“要求已经满足”,此外,moviepy(我正在使用的库)使用 ffmpeg 进行最终编码,并且我的部分代码似乎工作正常。任何帮助将不胜感激!!
save_to_file() 需要文件名而不是路径。
def save_to_file(自身,文本,文件名,名称=无):
''' 添加与事件队列对话的话语。
@param text: Text to sepak
@type text: unicode
@param filename: the name of file to save.
@param name: Name to associate with this utterance. Included in
notifications about this utterance.
@type name: str
'''
如果您确定它也接受路径, 做
文件路径 = os.path.normpath(文件路径)
在 save_to_file() 中使用它之前
此问题与文件的关系大于与您可能使用的库的关系。