树莓派音频配置

------------------------------------------------------------------------------------------------------------------------------------------

原文作者:Raspberry Pi Foundation

原文地址:http://www.raspberrypi.org/documentation/configuration/audio-config.md

原文版权:CC BY-SA

译文作者:Jianan - qinxiandiqi@foxmail.com

版本信息:基于原文2014-09-08版本进行翻译

译文版权:CC BY-SA,允许复制转载和演绎,但必须保留译者署名和译文链接,并遵守相同共享协议

------------------------------------------------------------------------------------------------------------------------------------------


树莓派有两种音频输出模式:HDMI和耳机接口。你可以在任何时候切换这两种模式。


如果你的HDMI显示器有内置的音箱,音频是可以通过HDMI接口播放的。你也可以切换到耳机接口,使用耳机或者其它耳机接口的音箱播放。如果你的显示器请求音箱支持,声音默认通过HDMI输出;如果没有,那将通过耳机接口输出。这可能不是你所期望的设置,也有可能自动检测的结果不准确,这种情况你可以手动选择输出。


1、CHANGE THE AUDIO OUTPUT(修改音频输出)


这里有两种方法设置音频输出:


1.1 COMMAND LINE(命令行)


在命令行终端上输入下面命令将会切换到HDMI输出模式:

amixer cset numid=3 2

这里将输出设置为2,也就是HDMI。

将输出设置为1将切换到模拟信号(也就是耳机接口)。

默认的设置为0,代表自动选择。


1.2 RASPI-CONFIG(raspi-config设置工具)


在命令行中输入以下命令打开raspi-config工具:

sudo raspi-config

输入命令后会打开以下界面:



选择第八项Advanced Options并回车,然后选择第六项Audio再回车:



现在你可以看到默认选择Auto选项以及另外两种模式的列表。选择其中一种模式然后回车,再按向右光标控制键跳出选项菜单,选择Finish退出配置工具。


2、 IF YOU'RE STILL NOT GETTING SOUND VIA HDMI(如果你还是没有从HDMI接口听到声音)


在一些少见的情况下,你需要编辑config.txt文件来强制进入HDMI模式(为了排除没有附带声音的DVI模式)。实现这个目的,你可以编辑/boot/config.txt文件设置hdmi_drive=2,然后重启系统让修改生效。



### 制作基于树莓派音频频谱仪 要使用树莓派制作一个音频频谱仪,可以从硬件准备、软件环境搭建以及具体实现方法入手。以下是详细的说明: #### 硬件需求 为了完成此项目,需要以下硬件组件: - 树莓派(推荐 Raspberry Pi 4 或更高版本) - 音频输入设备(如 USB 声卡或麦克风模块) - 显示屏幕(可以选择 OLED 屏幕或者 LED 点阵屏作为输出显示装置) 对于显示屏的选择,如果采用点阵屏,则可以参考类似的 Arduino 实现方案[^2]。 #### 软件环境配置 1. **操作系统安装** - 下载并烧录适合树莓派的操作系统镜像至 SD 卡中,建议选用官方 Raspbian OS。 - 安装完成后首次启动时按照提示完成初始设置,并更新系统包 `sudo apt update && sudo apt upgrade`。 2. **依赖库安装** - Python 是常用的编程语言之一,在本项目里也会用到它来处理信号分析等工作流。可以通过命令行工具 pip 来管理所需第三方扩展包比如 NumPy, SciPy 和 Matplotlib 进行数值计算绘图等功能支持;另外还需要 PyAudio 库用于捕获实时声音数据流。 ```bash sudo apt install python3-pip libasound2-dev portaudio19-dev pip3 install numpy scipy matplotlib pyaudio ``` 3. **FFT算法应用** 使用快速傅立叶变换 (Fast Fourier Transform) 技术将采集来的时域波形转换成频率分布直方图表征形式以便后续渲染展示出来。Python 的 Scipy 提供了方便易用的方法来进行 FFT 计算操作。 #### 示例代码片段 下面给出一段简单的 Python 脚本来演示如何读取来自麦克风的声音样本并通过 FFT 得到其对应的频谱特性曲线图像表示法: ```python import pyaudio import numpy as np from scipy.fftpack import fft import matplotlib.pyplot as plt CHUNK = 1024 * 2 # 每次获取的数据量大小 FORMAT = pyaudio.paInt16 # 数据精度 int16型 CHANNELS = 1 # 单声道 RATE = 44100 # 采样率Hz p = pyaudio.PyAudio() stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) fig, ax = plt.subplots() x = np.linspace(0, RATE / 2, CHUNK // 2) line, = ax.plot(x, np.random.rand(CHUNK//2), '-') ax.set_xlim([0,RATE/2]) ax.set_ylim([-5e4,5e4]) while True: data = stream.read(CHUNK) yf = fft(np.frombuffer(data,dtype=np.int16)) line.set_ydata(abs(yf[:CHUNK//2])) fig.canvas.draw() fig.canvas.flush_events() stream.stop_stream() stream.close() p.terminate() ``` 上述脚本实现了基本功能框架结构设计思路如下所示:先定义好一些全局变量参数值用来控制整个程序运行过程中的行为表现特征;接着初始化 PyAudio 对象实例化对象之后打开默认录音通道开始循环监听外界传进来的新鲜素材内容直到手动终止为止最后关闭资源释放连接结束工作流程即可[^1]。 #### 注意事项 当实际动手实践过程中可能会遇到各种各样的问题需要注意解决办法例如但不限于以下几个方面: - 如果发现播放出来的音质效果不佳可能是由于选择了错误类型的声卡驱动所致因此有必要确认当前正在使用的音频接口型号规格进而调整相应的选项设定使之匹配兼容良好状态之下才能获得理想的效果体验感度提升上去才行哦! - 关于图形界面部分考虑到跨平台移植性的因素最好还是尽量减少对外部GUI框架类别的过度依赖程度而是更多地依靠标准内置函数完成任务目标达成共识吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值