当前位置:首页 > 技术类 > 正文内容

在 Raspberry Pi 上使用 Python 播放声音

王-2M3个月前 (04-06)技术类228

今天,我需要在 Python 脚本中通过树莓派上的 USB 音频设备播放 MP3 或 WAV 文件。应该很容易吧! ”我想!


好吧,几个小时后,我决定写这篇博客文章来记录最简单的方法,因为我不得不花费相当长的时间才能到达真正通过 USB 音频输出播放声音的地步。

问题在于大多数指南,例如来自 Raspberry Pi 项目站点的这个简单指南,假设有两件事:

  1. 您的 Raspberry Pi 有一个已经可以使用的默认声音设备(例如0

  2. 您正在以交互方式运行代码或以某种方式运行代码,而无需了解底层 API 的工作原理

就我而言,问题是,在无头 Raspberry Pi Zero 上运行 USB 声音设备,这些假设都不是真的。

让 USB 音频正常工作

第一步是检测 USB 音频设备,并告诉您的系统将其用作默认音频设备。还有其他方法可以在 Python 代码本身中检测和/或选择特定设备,但如果您可以在系统范围内设置默认值并让 Python 使用该默认值,这是最简单的。

首先,您需要确保您的声音设备(在我的例子中是一个 9 美元的 Vantec NBA-120U 适配器)被识别。运行以下命令,您应该会看到它列为名称中带有“USB”的设备:

$ cat /proc/asound/modules
 1 snd_usb_audio

一些 Pi 模型也会显示一个0内置设备(例如模型 B 版本上的声音输出)。默认情况下,ALSA(Advanced Linux Sound Architecture)音频系统0无论如何都会尝试使用 device 。要告诉它使用设备1snd_usb_audio设备),您可以配置全局/etc/asound.conf文件或用户本地~/.asoundrc文件。

在这两个文件之一(我选择配置 Pi 用户的~/.asoundrc文件)中,放入以下内容:

pcm.!default {
        type hw
        card 1
}

ctl.!default {
        type hw
        card 1
}

这告诉 ALSA 默认card 1使用 USB 设备。现在,要测试它是否正常工作,请将耳机或扬声器插入输出,然后运行:

$ speaker-test -c2 -twav -l7

您应该开始通过扬声器或耳机听到“左前”和“右前”之类的声音。

播放声音pygame.mixer

对于我的Raspberry Pi Bell Slapper项目,我有一个简单的“ding.wav”文件,它是铃声的声音。我想设置它,这样树莓派不仅会发出带有连接到树莓派 GPIO 的螺线管的物理铃铛,而且还会通过扬声器发出叮当声,因此有人可以在另一个房间听到叮当声。

这是播放文件所需的最少 Python 代码pygame

import pygame

pygame.mixer.init()
sound = pygame.mixer.Sound('/home/pi/ding.wav')
playing = sound.play()
while playing.get_busy():
    pygame.time.delay(100)

这需要pygame,它可以与pip3 install pygame如果没有所需的混音器库,Pygame 也会失败,因此您还需要运行apt-get install libsdl2-mixer-2.0-0.

完成此操作后,您应该能够运行脚本 ( python3 play-sound.py),并且它应该会播放文件。

最后的while循环很重要——没有它,脚本将在声音有机会播放之前退出!



    扫描二维码推送至手机访问。

    版权声明:本文由金讯时代-BLOG发布,如需转载请注明出处。

    本文链接:https://www.lmwmm.com/post/283.html

    分享给朋友:

    相关文章

    树莓派因芯片短缺涨价,2GB版上调10美元,国内价格更离谱

    树莓派因芯片短缺涨价,2GB版上调10美元,国内价格更离谱

    在全球缺“芯”的大背景下,半导体供应限制了众多电子产品行业发展——树莓派也同样不能幸免。昨天,树莓派之父Eben Upton在博客上公布了一项重大消息:树莓派有史以来首次涨价。其中2GB树莓派4产品的价格从35美元调整为45美元,而其他产品...

    批处理文件扩展名(扩展名为.bat)

    批处理文件扩展名(扩展名为.bat)

    批处理的介绍 扩展名是bat(在Windows NT/2000/xp/2003/win 7下也可,cmd)的文件就是批处理文件。首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下...

    Google传喜讯:请在 AdSense 中验证您的付款地址

    Google传喜讯:请在 AdSense 中验证您的付款地址

    我们于 三月 09 2022给您在 AdSense 中向我们提供的付款地址寄去了一个 PIN 码,即个人识别码。您在收到 PIN 码邮件后,请点击本电子邮件中的验证您的地址,然后在 AdSense 首页上的验证卡片中输入您的 PIN 码。...

    如何在 Raspberry Pi 上安装和设置家庭助理以实现家庭自动化

    如何在 Raspberry Pi 上安装和设置家庭助理以实现家庭自动化

    您购买的几乎所有智能家居设备都需要您安装应用程序、注册并将它们连接到互联网云服务器,然后才能开始控制它们。虽然云服务更方便,但它们也会存储您的活动数据,例如您使用设备的时间、地点或方式,并且可能存在隐私问题。这可能不是最关心的问题,但如果您...

    如何用微信小程序,每天给自己赚个鸡腿?

    如何用微信小程序,每天给自己赚个鸡腿?

    话说:谁不想拥有一个自己的小程序呢?既可以赚点小钱又可以长长见识。不懂小程序的小白能不能做出来呢?那来对了,这个教程就是针对小白的。今天决定把方法开源出来,包括小程序从注册到上架,还有怎么起名能带来自然流量,及收益从哪里来!申请账号百度搜索...

    发表评论

    访客

    看不清,换一张

    ◎欢迎参与讨论,请在这里发表您的看法和观点。