Python 2.7 在Raspbery Pi上更改Python程序中的卷

Python 2.7 在Raspbery Pi上更改Python程序中的卷,python-2.7,raspberry-pi,raspberry-pi2,Python 2.7,Raspberry Pi,Raspberry Pi2,我使用Raspbery Pi B+2。我有一个Python程序,它使用超声波传感器测量到物体的距离。我想改变的是音量,这取决于与人的距离。有一个Python代码来获取距离,我不知道如何通过Python代码更改Raspbery Pi卷 有什么方法可以做到这一点吗?您可以使用python alsaaudio包。 安装和使用非常简单 要安装或运行: sudo apt-get install python-alsaaudio 在Python脚本中,导入模块: import alsaaudio 现在,

我使用Raspbery Pi B+2。我有一个Python程序,它使用超声波传感器测量到物体的距离。我想改变的是音量,这取决于与人的距离。有一个Python代码来获取距离,我不知道如何通过Python代码更改Raspbery Pi卷

有什么方法可以做到这一点吗?

您可以使用python alsaaudio包。 安装和使用非常简单

要安装或运行:

sudo apt-get install python-alsaaudio
在Python脚本中,导入模块:

import alsaaudio
现在,您需要获取主混音器并获取/设置音量:

m = alsaaudio.Mixer()
current_volume = m.getvolume() # Get the current Volume
m.setvolume(70) # Set the volume to 70%.
如果行
m=alsaaudio.Mixer()
抛出错误,请尝试:

m = alsaaudio.Mixer('PCM')
这可能是因为Pi使用PCM而不是主通道


通过运行命令
amixer

,您可以查看有关Pi音频通道、音量(等)的更多信息。我为两个按钮的音量控制提供了一个简单的python服务。根据@ant0nisk的说法

它显示获取和设置音量以及静音

  • 收集可用的实际混音器(将提供可用卡的列表):
  • 将alsaaudio导入为音频
    scanCards=audio.cards()
    打印(“卡:”,扫描卡)
    
    就我而言,我有以下清单:

    [u'PCH',u'headset']
    
  • 扫描每个卡的混音器:
  • 扫描卡中的卡的
    :
    扫描混音器=音频混音器(扫描卡索引(卡))
    打印(“混合器:”,扫描混合器)
    
    就我而言,我有以下两个列表:

    [u'Master',u'heephone',u'Speaker',u'PCM',u'Mic Boost',u'IEC958',u'IEC958',u'IEC958',u'peep',u'Capture',u'Auto-Mute Mode',u'Internal Mic Boost',u'Loopback Mixing']
    
    [u'耳机',u'麦克风',u'自动增益控制']
    
    正如您可能看到的,“主”并不总是可用的混音器,但传统上预期主混音器的等效值为索引0。(并不意味着永远!)

  • 在这种情况下,要控制USB耳机的音量,请执行以下步骤 增大音量
    def volumeMasterUP():
    混音器=音频。混音器('耳机',cardindex=1)
    volume=mixer.getvolume()
    newVolume=int(卷[0])+10
    如果newVolume=0:
    mixer.setvolume(newVolume)
    
    包名为