当前位置:首页 > 技术类 > 在 Raspberry Pi 上使用 Python 播放声音

在 Raspberry Pi 上使用 Python 播放声音

微信用户3年前 (2022-04-06)技术类4357

今天,我需要在 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://lmwmm.com/post/283.html

分享给朋友:

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

IE霸占电脑20多年的“垃圾”,终于要彻底再见!

IE霸占电脑20多年的“垃圾”,终于要彻底再见!

这两天看到了一个新闻,微软再次提醒,IE浏览器将在今年6月正式退役。这让我是百感交集,从1995年至今,也有27个年头,在互联网的发展史上,已经可以算是一个“化石”级别的产品了。对于很多人来说,IE浏览器也应该要像“化石”那般,淹没在历史的...

MQTT服务器4G远程遥控小车代码

MQTT服务器4G远程遥控小车代码

接收机代码#include <ESP8266WiFi.h> #include <PubSubClient.h> #include<Servo.h> #include ...

谷歌CEO要求全员测试Bard AI聊天机器人

谷歌CEO要求全员测试Bard AI聊天机器人

2月16日早间消息,据报道,当地时间周三,谷歌母公司Alphabet CEO桑达尔·皮查伊发送内部备忘录,要求谷歌员工贡献2至4个小时,帮助该公司改善其人工智能(AI)聊天机器人Bard。这封邮件称,谷歌目前急需采取行动,赢得下一代AI搜索...

12家国内外AI大模型及申请体验地址汇总

12家国内外AI大模型及申请体验地址汇总

近期,由ChatGPT引发的AI军备竞赛,可谓是百家齐鸣,眼花缭乱,应接不暇。本周,国内外多家大公司像约好了一样,纷纷发布或即将发布自己的AI大模型。这些公司分布在各行各业,可能都是想借助大模型提升自己的核心竞争力,在新一轮的科技竞赛中处于...

一口气最全解读 ChatGPT 编程超能力,13个章节、50个实例,告诉你从哪儿开始!

一口气最全解读 ChatGPT 编程超能力,13个章节、50个实例,告诉你从哪儿开始!

前言今天,我们通过十三个章节,50+个示例,为大家展示ChatGPT在编程开发方面的无限潜力。有了ChatGPT的力量,可以简化工作流程,减少错误,甚至改进代码!从作为初学者学习知识,到为面试做准备,所有你需要的,基本都覆盖了。不过也要注意...

【讲座预告】火爆全网的ChatGPT应用实训,人人可学!点击报名!

【讲座预告】火爆全网的ChatGPT应用实训,人人可学!点击报名!

随着以自然语言处理为代表的人工智能的发展,OpenAI公司的最新成果ChatGPT近来“火出圈”。 TA不仅能和任何人“对答如流”,擅长写策划方案和调研报告,还能翻译文章、撰写邮件、创作脚本、编写代码,甚至能通过谷歌L3程...