我使用Raspbery Pi B + 2.我有一个Python程序,它使用超声波传感器测量到物体的距离。我想要的是根据与人类的距离来改变音量。有了Python代码来获取距离,我不知道如何通过Python中的代码更改Raspbery Pi卷。
有没有办法做到这一点?
答案 0 :(得分:4)
您可以使用 python-alsaaudio 包。 安装和使用非常简单。
安装run:
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音频频道,音量(等等)的更多信息。
答案 1 :(得分:1)
我为一个双按钮音量控制做了一个简单的python服务。根据@ ant0nisk的内容。
https://gist.github.com/peteristhegreat/3c94963d5b3a876b27accf86d0a7f7c0
显示获取和设置音量,以及静音。
答案 2 :(得分:1)
import alsaaudio as audio
scanCards = audio.cards()
print("cards:", scanCards)
就我而言,我有以下列表:
[u'PCH', u'headset']
for card in scanCards:
scanMixers = audio.mixers(scanCards.index(card))
print("mixers:", scanMixers)
在我的情况下,我有以下两个列表:
[u'Master', u'Headphone', u'Speaker', u'PCM', u'Mic', u'Mic Boost', u'IEC958', u'IEC958', u'IEC958', u'IEC958', u'IEC958', u'Beep', u'Capture', u'Auto-Mute Mode', u'Internal Mic Boost', u'Loopback Mixing']
[u'Headphone', u'Mic', u'Auto Gain Control']
正如您所看到的,“Master”并不总是可用的混音器,但传统上预期主混音器的等效值为索引0.(并不总是意味着!)
def volumeMasterUP():
mixer = audio.Mixer('Headphone', cardindex=1)
volume = mixer.getvolume()
newVolume = int(volume[0])+10
if newVolume <= 100:
mixer.setvolume(newVolume)
def volumeMasterDOWN():
mixer = audio.Mixer('Headphone', cardindex=1)
volume = mixer.getvolume()
newVolume = int(volume[0])-10
if newVolume >= 0:
mixer.setvolume(newVolume)