在Python中使用PyAudio库(Linux)

时间:2013-09-29 14:54:10

标签: python

我正在尝试实现一个PyAudio库的方法,我想更改默认输入设备,因为我已经将基于USB的Mic连接到我的笔记本电脑而不使用内置MIC,但我面临着这样做的问题,< / p>

以下是该方法的完整细节,

Help on method open in module pyaudio:

open(self, *args, **kwargs) method of pyaudio.PyAudio instance
    Open a new stream. See constructor for
    :py:func:`Stream.__init__` for parameter details.

    :returns: A new :py:class:`Stream`

class pyaudio.Stream(PA_manager, rate, channels, format, input=False, output=False, input_device_index=None, output_device_index=None, frames_per_buffer=1024, start=True, input_host_api_specific_stream_info=None, output_host_api_specific_stream_info=None, stream_callback=None)
PortAudio Stream Wrapper. 

使用PyAudio.open()制作新流。

__init__(PA_manager, rate, channels, format, input=False, output=False, input_device_index=None, output_device_index=None, frames_per_buffer=1024, start=True, input_host_api_specific_stream_info=None, output_host_api_specific_stream_info=None, stream_callback=None)

初始化流;这应该被称为 PyAudio.open()。流可以是输入,也可以是输出。

我想要做的是使用

PyAudio.open() 

方法并将input_device_index=的值设置为1

但我无法理解如何传递此函数中的参数以及如何使用 init

我已经尝试过的是,

p = pyaudio.PyAudio()
p.open(__init__(input_device_index=1))

但它给出了错误。

这是方法的完整文档, INIT“&GT; HTTP://people.csail.mit.edu/hubert/pyaudio/docs/#pyaudio.Stream的初始化

2 个答案:

答案 0 :(得分:2)

*args将任何位置参数作为列表传递给函数。

**kwargs将任何关联参数作为dict传递给函数。

示例:

def a(*args,**kwargs):
     print args
     print kwargs

a('abc','75449',test=None,abc=-1)

打印:

['abc','75449']
{'test':None,'abc':-1}

答案 1 :(得分:2)

p = pyaudio.PyAudio()
p.open(__init__(input_device_index=1))

没有意义,因为__init__未定义。初始化PyAudio.__init__会调用PyAudio,因此这将是

p = pyaudio.PyAudio(input_device_index=1)
p.open()

虽然似乎open使用*args**kwargs传递了所有属性,但它可能是

p = pyaudio.PyAudio()
p.open(input_device_index=1)

任何比这更精确的事情都需要更好的PyAudio问题或经验,我都没有。