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

在 Raspberry Pi 上使用 Python 播放声音

lmwmm4年前 (2022-04-06)技术分享5958

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


raspberry-pi-clarence-bell-speaker-sound-usb-audio-python.jpeg

好吧,几个小时后,我决定写这篇博客文章来记录最简单的方法,因为我不得不花费相当长的时间才能到达真正通过 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发布,如需转载请注明出处。

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

分享给朋友:

“在 Raspberry Pi 上使用 Python 播放声音” 的相关文章

【树莓派基础系列教程】2、远程连接树莓派

【树莓派基础系列教程】2、远程连接树莓派

远程连接树莓派核心思想 在联网的状态下,我们可以通过一个叫做SSH的东西,从本地登陆到任何一台我们已知用户名和密码,并且开放了22端口的Linux主机上。SSH本质是建立在应用层基础上的一种安全协议,有兴趣的可以自行Google一下。所以,…

通過CE修改器來跑滿百度網盤和迅雷的下載速度! Cheat Engine 7.5

通過CE修改器來跑滿百度網盤和迅雷的下載速度! Cheat Engine 7.5

1.Cheat Engine 是一款內存修改編輯工具 ,它允許你修改你的遊戲或軟件內存數據,以得到一些其他功能。它包括16進制編輯,反彙編程序,內存查找工具。與同類修改工具相比,它具有強大的反彙編功能,且自身附帶了外掛製作工具,可…

Windows 11 23H2 新增"系统组件"中心

Windows 11 23H2 新增"系统组件"中心

微软正在 Windows 11 23H2 中测试新的"系统组件"页面,这一功能最终也将抵达 22H2。设置"中的"系统组件"页面是一种管理默认应用程序、扩展程序、编解码器和其他被认为与 Wi…

微软Xbox Series S造型烤吐司机,玩转PG美时美刻游戏情怀!

微软Xbox Series S造型烤吐司机,玩转PG美时美刻游戏情怀!

微软在2021推出了备受PG SOFT电子游戏迷瞩目的Xbox Series X造型冰箱,现在他们与美国零售商Walmart合作,推出了Xbox Series S造型烤面包机。这款特殊的烤面包机看起来酷似Xbox Series S游戏主机,…

安卓手机迎来磁吸充电新时代?外媒看好华硕在ibb游戏领域的竞争优势

安卓手机迎来磁吸充电新时代?外媒看好华硕在ibb游戏领域的竞争优势

新一代Qi2无线充电标准崭露头角,苹果iPhone率先实现支持,然而Android阵营何时跟进成为焦点。媒体《9to5google》瞄准华硕,或许成为首个Qi2兼容手机的品牌。Qi2是由苹果与无线充电联盟(WPC)共同打造的通用充电标准,结…

《黎明杀机》与《心灵杀手》携手合作,为BB游戏玩家打造专属英雄「艾伦韦克」

《黎明杀机》与《心灵杀手》携手合作,为BB游戏玩家打造专属英雄「艾伦韦克」

备受期待的多人不对称恐怖逃脱游戏《黎明杀机》宣布与动作恐怖作品《心灵杀手》合作,引来了BB游戏玩家的热切关注。游戏将推出新的人类方幸存者「艾伦韦克」(Alan Wake),其造型灵感来源于《心灵杀手2》中的主角,让玩家在1月30日迎来了令人…