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

在 Raspberry Pi 上使用 Python 播放声音

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

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


在 Raspberry Pi 上使用 Python 播放声音

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

分享给朋友:

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

windows10环境下搭建spark on yarn源码调试环境

windows10环境下搭建spark on yarn源码调试环境

    spark 3.0.0版本刚出炉,官方称相比2.4版本,性能提升了2倍。考虑到生产环境下 spark on yarn的模式居多,本文在Windows10环境下,搭建spark on yarn的源码阅读调…

PC端微信接收的文件变只读?这可能是最好的解决办法

PC端微信接收的文件变只读?这可能是最好的解决办法

近日,不少读者在后台留言称,使用微信 PC 版接收的文档只能以“只读模式”打开,导致用户无法直接编辑保存。据众多网友反馈,这是自更新至 3.9 版本之后就遇到的问题,接受的文档无论是 Word 还是 Excel,以及无论是用 WPS 还是…

用ChatGPT写假新闻!深圳一自媒体公司法人代表被抓

用ChatGPT写假新闻!深圳一自媒体公司法人代表被抓

ChatGPT问世以来,引发了不小的争议。最让人担心的事发生了——有人用它制作假新闻!此前,一篇题为《今晨甘肃一火车撞上修路工人致9人死亡》的“新闻”吸引了甘肃省平凉市警方的注意,并引发网友关注。经判定,这是一篇假新闻,警方进一步侦查发现,…

运维:Windows11操作系统安装VMware16.1.1图文教程

运维:Windows11操作系统安装VMware16.1.1图文教程

一、VMware 16.1.1 介绍VMware 16.1.1 是一款功能非常强大虚拟化软件,它允许用户在一台计算机上创建和运行多个虚拟机(Virtual Machine)相当于拥有多台服务器。这些虚拟机可以模拟独立的操作系统和硬件环境,使…

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

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

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

进入PG新时代:CES电竞屏幕一举突破2K和480Hz刷新率的颠覆性创新

进入PG新时代:CES电竞屏幕一举突破2K和480Hz刷新率的颠覆性创新

即将开幕的美国CES消费PG电子展掀起一波电竞屏幕技术的风潮,LG和三星两大屏幕巨头预告了引人注目的最新一代产品。三星推出了新款Odyssey OLED系列电竞屏幕,其中27寸的G6以360Hz的刷新率和0.03ms的反应速度带来顺滑的画面…