使用 Python,如何将 flac 流转换为 wav 流?

With Python, how can I convert a flac stream to a wav stream?

我知道我可以使用 PyAudio.flac 文件转换为 .wav 文件。但我想知道我是否可以以某种方式将其作为一个流来完成,而不必保存 .wav 文件?

目前,我有:

stream = open('84-121123-0000.flac', 'rb')

但我想将该流转换为 wav 文件。任何帮助将不胜感激。澄清一下,我不想保存 .wav 文件。相反,我想保留 wav 转换内容的流。

您可以使用 pydub 库,它很容易实现您需要的功能:

from pathlib import PurePath
from pydub import AudioSegment

file_path = PurePath("test.flac")

flac_tmp_audio_data = AudioSegment.from_file(file_path, file_path.suffix[1:])

flac_tmp_audio_data.export(file_path.name.replace(file_path.suffix, "") + ".wav", format="wav")

Documentation.

在Linux中,可以安装ffmpeg:

sudo apt update
sudo apt install ffmpeg

在Windows中:下载ffmpeg在:FFMPEG Download,在Edit the system environment variablesPathNewC:\ffmpeg\bin\

然后 运行 在 Python:

import os
os.system('ffmpeg -i inputfile.flac output.wav')

您可以将此输出用作临时文件,延迟 3-5 秒。

您可以使用 pydub 执行此操作而无需保存文件,方法是使用 io.BytesIO:

import io
from pydub import AudioSegment


flac = AudioSegment.from_file('/path/to/84-121123-0000.flac', format='flac')
stream = io.BytesIO()
flac.export(stream, format='wav')