如何在输入设备中选择类似pyaudio的声音设备中的输入通道?

时间:2020-02-04 12:10:23

标签: python audio pyaudio

如何使用mappingsounddevice中选择类似pyaudio的输入通道?

import pyaudio
import numpy as np

CHUNK = 2**11
RATE = 44100

p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paInt16,channels=2,rate=RATE,input=True,
              frames_per_buffer=CHUNK, input_device_index=16)

如何在此处选择输入通道?

sounddevice中,您可以使用mapping

import sounddevice as sd
from scipy.io.wavfile import write

sd.default.device = 16
sd.default.samplerate = 44100
input_mapping = [4, 5]  # Input Channels 4 and 5

duration = 2  # seconds
recording = sd.rec(int(duration * sd.default.samplerate), mapping=input_mapping)
sd.wait()
write('test.wav', sd.default.samplerate, recording)  # Save as WAV file

或流中的AsioSettings channel_selectors

import queue
import sounddevice as sd
import soundfile as sf
import numpy
import os

sd.default.device = 16  # Zoom L12 ASIO
sd.default.samplerate = 44100
sd.default.channels = 2
input_channels = sd.default.channels[0]
output_channels = sd.default.channels[1]
sd.default.extra_settings = sd.AsioSettings(channel_selectors=[3, 4])  # Input Channels 4 and 5; Starts at 0 ( Zero )
subtype = 'PCM_24'
file = 'testStream.wav'

if os.path.exists(file):
    os.remove(file)

q = queue.Queue()

def callback(indata, frames, time, status):
    if status:
        print(status)
    q.put(indata.copy())

with sf.SoundFile(file, mode='x', samplerate=sd.default.samplerate, channels=input_channels, subtype=subtype) as file:
    with sd.InputStream(callback=callback):
        print('#' * 80)
        print('press Ctrl+C to stop the recording')
        print('#' * 80)
        while True:
            file.write(q.get())

它如何在PyAudio中工作?

0 个答案:

没有答案