首页 > 解决方案 > Python PyAudio 模仿 ffmpeg

问题描述

我在 Ubuntu 中有一个音频实用程序,它以流方式处理音频数据,我们称之为/bin/speech_to_text_transcription.

我可以通过管道传输到它,从麦克风流式传输 WAV 数据,如下所示:

ffmpeg -hide_banner -loglevel error \
-f pulse -i default \
-acodec pcm_s16le \
-ar 16000 -ac 1 -ab 256k \
-f wav - \
| /bin/speech_to_text_transcription

如您所见,我正在将一个以 16kHz 采样的单声道 WAV 音频文件输入到/bin/audio_process. 我知道上述工作,因为我看到成功的输出过程

我想使用 Python 模拟类似的设置PyAduio,这样我就可以运行与上面相同的设置,如下所示:

python stream_audio.py | /bin/speech_to_text_transcription

我需要这样做,因为我的目标主机没有安装 FFmpeg。

import pyaudio
import pickle, sys

chunk = 1024  # Record in chunks of 1024 samples
sample_format = pyaudio.paInt16  # 16 bits per sample
channels = 1
fs = 16000  # Record at 16000 samples per second
seconds = 1000

p = pyaudio.PyAudio()  # Create an interface to PortAudio
stream = p.open(format=sample_format,
                channels=channels,
                rate=fs,
                frames_per_buffer=chunk,
                input=True)

for i in range(0, int(fs / chunk * seconds)):
    data = stream.read(chunk)
    pickle.dump(data, sys.stdout.buffer)

但是,我无法模仿设置。可能缺少什么?

谢谢

标签: ffmpegpyaudio

解决方案


推荐阅读