美文网首页Python
PyAudio库使用

PyAudio库使用

作者: 忘了呼吸的那只猫 | 来源:发表于2021-08-25 15:22 被阅读0次

PyAudio使用这个库可以进行录音,播放音频文件等等。
以下代码是PyAudio常用功能的实现

1.实现录音

import pyaudio
import wave
from tqdm import tqdm
def record_audio(wave_out_path,record_second):
  CHUNK = 1024
  FORMAT = pyaudio.paInt16
  CHANNELS = 2
  RATE = 44100
  p = pyaudio.PyAudio()
  stream = p.open(format=FORMAT,
          channels=CHANNELS,
          rate=RATE,
          input=True,
          frames_per_buffer=CHUNK)
  wf = wave.open(wave_out_path, 'wb')
  wf.setnchannels(CHANNELS)
  wf.setsampwidth(p.get_sample_size(FORMAT))
  wf.setframerate(RATE)
  print("* recording")
  for i in tqdm(range(0, int(RATE / CHUNK * record_second))):
    data = stream.read(CHUNK)
    wf.writeframes(data)
  print("* done recording")
  stream.stop_stream()
  stream.close()
  p.terminate()
  wf.close()
record_audio("output.wav",record_second=4)

2.实现播放音频文件

import pyaudio
import wave
from tqdm import tqdm
def play_audio(wave_path):
    CHUNK = 1024
    wf = wave.open(wave_path, 'rb')
    # instantiate PyAudio (1)
    p = pyaudio.PyAudio()
    # open stream (2)
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
          channels=wf.getnchannels(),
          rate=wf.getframerate(),
          output=True)
    # read data
    data = wf.readframes(CHUNK)
    # play stream (3)
    datas = []
    while len(data) > 0:
    data = wf.readframes(CHUNK)
    datas.append(data)
    for d in tqdm(datas):
    stream.write(d)
    # stop stream (4)
    stream.stop_stream()
    stream.close()
    # close PyAudio (5)
    p.terminate()
play_audio("test.wav")

pyaudio只能播放wav格式的音频,若是需要播放多格式的可以使用pydub库,可以支持多种格式的播放

3.实现回放

import pyaudio

CHUNK = 1024
WIDTH = 2
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(WIDTH),
                channels=CHANNELS,
                rate=RATE,
                input=True,
                output=True,
                frames_per_buffer=CHUNK)

print("* recording")

# for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
while True:
    data = stream.read(CHUNK)
    stream.write(data, CHUNK)

print("* done")

stream.stop_stream()
stream.close()

p.terminate()

4.以回调方法的方式播放一个音频文件

import pyaudio
import wave
from tqdm import tqdm
import time
def play_audio_callback(wave_path):
    CHUNK = 1024
    wf = wave.open(wave_path, 'rb')
    # instantiate PyAudio (1)
    p = pyaudio.PyAudio()
    def callback(in_data, frame_count, time_info, status):
        data = wf.readframes(frame_count)
        return (data, pyaudio.paContinue)
    # open stream (2)
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True,
                    stream_callback=callback)
    # read data
    stream.start_stream()
    while stream.is_active():
        time.sleep(2)
    # stop stream (4)
    stream.stop_stream()
    stream.close()
    # close PyAudio (5)
    p.terminate()
play_audio_callback("test.wav")

5.非阻塞回调

import pyaudio
import time

WIDTH = 2
CHANNELS = 2
RATE = 44100

p = pyaudio.PyAudio()

def callback(in_data, frame_count, time_info, status):
    return (in_data, pyaudio.paContinue)

stream = p.open(format=p.get_format_from_width(WIDTH),
                channels=CHANNELS,
                rate=RATE,
                input=True,
                output=True,
                stream_callback=callback)
print(pyaudio.paInt16)

stream.start_stream()

while stream.is_active():
    time.sleep(0.1)

stream.stop_stream()
stream.close()

p.terminate()

相关文章

  • 利用Python进行录音和音频分析

    pyaudio简介 Python有个很强大的处理音频的库pyqudio, 使用pyaudio库可以进行录音,播放,...

  • PyAudio库使用

    PyAudio使用这个库可以进行录音,播放音频文件等等。以下代码是PyAudio常用功能的实现 1.实现录音 2....

  • python录音和播放

    pyaudio官网 PyAudio 是语音处理的 Python库,提供了比较丰富的功能。 本次录音功能就是使用py...

  • 音频编码之Python播放声音

    在Python中播放向量声音。 需要的库有: numpy和pyaudio 在终端使用conda安装: conda ...

  • pyaudio+socket实现语音通话

    使用pyaudio库调用电脑的麦克风和声音播放设备,使用socket实现网络通讯代码如下: server: cli...

  • pydudio&wave

    wave库官方文档说明 pyaudio库说明文档 以下是一个录音的例子:

  • python制作录音功能

    依赖库 这里我们主要依赖pyaudio这个库,操作比较简单。http://people.csail.mit.edu...

  • python录音功能

    pyaudio python3.7安装pyaudio出错解决 源码

  • python录音

    ···import wavefrom pyaudio import PyAudio, paInt16 def sa...

  • python播放音频

    anaconda建立环境 python=3.7.9切换到虚拟环境里安装pyaudio这个库好像只能播放.wav文件...

网友评论

    本文标题:PyAudio库使用

    本文链接:https://www.haomeiwen.com/subject/qdasiltx.html