使用Ubuntu耳机输出正弦波信号

news2024/9/29 9:19:05

最近有一个项目想使用喇叭发出一个标准的正弦波测试信号,故记录下操作过程

sudo apt install libasound2-dev

否则有可能会报错:

        alsaaudio.c:28:10: fatal error: alsa/asoundlib.h: No such file or directory  

安装pyalsaaudio:

pip install pyalsaaudio

安装numpy:

pip install numpy

执行如下python代码可以实现播放5秒的1Khz正弦波

import numpy as np
import alsaaudio

# 设置参数
duration = 5.0  # 持续时间(秒)
frequency = 1000.0  # 正弦波频率(Hz)
sample_rate = 44100  # 采样率(Hz)
amplitude = 0.8  # 振幅(范围 0.0 到 1.0)

# 生成时间轴
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)

# 生成正弦波
sine_wave = amplitude * np.sin(2 * np.pi * frequency * t)

# 转换为 16-bit PCM 格式
sine_wave = np.int16(sine_wave * 32767)

# 创建 ALSA 播放器
playback = alsaaudio.PCM(alsaaudio.PCM_PLAYBACK, alsaaudio.PCM_NORMAL)
playback.setchannels(1)  # 单声道
playback.setrate(sample_rate)
playback.setformat(alsaaudio.PCM_FORMAT_S16_LE)
playback.setperiodsize(1024)

# 播放音频
playback.write(sine_wave.tobytes())
playback.close()

如图所示标准的1KHz输出信号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《 C++ 修炼全景指南:六 》深入探索 C++ 标准库中的 stack 与 queue 容器适配器

1、引言 1.1、容器适配器的概念与应用 容器适配器(Container Adapters)是 C 标准库提供的一种特殊容器,它不是一种独立的容器,而是对其他标准容器的封装,用来实现特定的数据结构如栈(stack)和…

【成品论文】2024年华为杯研赛D题成品论文获取入口

您的点赞收藏是我继续更新的最大动力! 一定要点击文末的卡片,那是获取资料的入口! 现分享2023年华为杯研赛D题成品论文(部分),供大家学习: 题 目: ____区域双碳目标与路径规划研究 …

MySQL之安装与基础知识

目录 一:在centos7上安装MySQL数据库 1.卸载默认存在的环境 2.配置mysql的yum源 3. 安装MySQL 4.登录mysql 5.设置MySQL的配置文件 二:MySQL基础知识 1.什么是数据库 2.主流数据库 3.服务器,数据库,表关系及使用案例 4…

function uuid_generate_v4()不存在

说明:记录一次使用postgresql函数错误,如下: 项目中的一个SQL用到了uuid_generate_v4()函数生成uuid作为记录的主键,结果报上面这个错误; 分析&排查 首先,我连接上了数据库,在数据库里敲下…

《论网络安全体系设计》写作框架,软考高级系统架构设计师

论文真题 随着社会信息化的普及,计算机网络已经在各行各业得到了广泛的应用。目前,绝大多数业务处理几乎完全依赖计算机和网络执行,各种重要数据如政府文件、工资档案、财务账目和人事档案等均依赖计算机和网络进行存储与传输。另一方面&…

ThreeJs创建圆环

ThreeJs除了创建基本的长方体,球形,圆柱等几何体,也可以创建一些特殊的几何体,比如圆环,多边体,这节就来讲怎么用Threejs绘制出圆环。首先依然是要创建出基础的组件,包括场景,相机&a…

如何理解Configurational entropy

Configurational entropy 是热力学和统计力学中的一个重要概念,它描述的是系统中由于其微观状态排列(即配置)导致的不确定性或混乱程度。不同于热力学中的热熵(thermal entropy),它特指那些与系统中的粒子、…

8.6小波变换(Wavelet Transform)边缘检测

实验原理 由于OpenCV本身并不直接支持小波变换(Wavelet Transform),我们需要借助一些技巧来实现它。一种常见的方法是利用离散余弦变换(DCT)或离散傅立叶变换(DFT)来近似实现小波变换的功能。但…

Spring的核心思想

目录 一、Spring要解决的问题 二、Spring的核心结构 三、核心思想 3.1.1 什么是IOC 3.1.2 IOC解决的问题:耦合 3.1.3 IOC和DI的区别 3.2.1 什么是AOP 3.2.2 AOP解决的问题:耦合 3.2.3 为什么叫做面向切面编程 一、Spring要解决的问题 问题1&am…

道路检测-目标检测数据集(包括VOC格式、YOLO格式)

道路检测-目标检测数据集(包括VOC格式、YOLO格式) 数据集: 链接:https://pan.baidu.com/s/1nDwTmZxH_BQrVTj9MzUgDg?pwd3zh7 提取码:3zh7 数据集信息介绍: 共有 3321张图像和一一对应的标注文件 标注文…

Excel 国产化替换新方案

前言 在当前数字化转型和信创(信息技术应用创新)战略背景下,企业对于安全性、自主可控性和高效办公工具的需求日益增加。作为一款国产自主研发的高性能表格控件,SpreadJS 正成为替换 Excel 的最佳选择。它不仅全面支持国产化认证…

衡石分析平台使用手册-通用配置文档

配置文件​ 配置文件中存放 HENGSHI SENSE 的配置参数,可以通过修改配置文件来改变 HENGSHI SENSE 的服务方式。 配置文件说明​ 配置文件存放在 conf 路径下,包含 hengshi-sense-env.sh 和 engine-segment-hosts 两个文件。其中 engine-segment-host…

Qt与VS打包命令

一 QT 将程序编译生成的可执行文件(.exe)放到一个干净的文件夹。找到QT安装目录,进入编译版本的bin目录,找到windeployqt.exe,在文件访问路径栏的最前边,添加“cmd ”进入控制台。控制台命令: …

K8s 简介以及详细部署步骤

Kubernetes 简介 应用部署方式演变 在部署应用程序的方式上,主要经历了三个阶段: 1、传统部署 互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源…

【Java面试】第七天

🌟个人主页:时间会证明一切. 目录 有三个线程T1,T2,T3如何保证顺序执行?依次执行start方法使用join使用CountDownLatch使用线程池使用CompletableFuture Spring Bean的生命周期是怎么样的?Autowired和Resource的关系?相…

使用Python生成多种不同类型的Excel图表

目录 一、使用工具 二、生成Excel图表的基本步骤 三、使用Python创建Excel图表 柱形图饼图折线图条形图散点图面积图组合图瀑布图树形图箱线图旭日图漏斗图直方图不使用工作表数据生成图表 四、总结 Excel图表是数据可视化的重要工具,它通过直观的方式将数字信…

Linux环境

Linux环境 导语程序参数getoptgetopt_long 环境变量getenv/putenvenviron 时间和日期timedifftime和gmtimectime&asctimestrftime/strptime 临时文件tmpnamtmpfile 获取信息用户主机日志 资源和限制总结参考文献 导语 任何程序都是在一定的环境下运行的,通常这…

分布式事务学习笔记(二)Seata架构、TC服务器部署、微服务集成Seata

文章目录 前言2 Seata2.1 Seata的架构2.2 部署TC服务1)下载安装包2)解压3)修改配置文件4)在Nacos中添加TC服务配置5)创建数据库表6)启动TC服务7)查看TC服务 2.3 微服务集成Seata2.3.1 引入依赖2…

通过覆写 url_for 将 flask 应用部署到子目录下

0. 缘起 最近用 flask 写了一个 web 应用,需要部署到服务器上。而服务器主域名已经被使用了,只能给主域名加个子目录进行部署,比如主域名 example.org ,我需要在 example.org/flask 下部署。这时 flask 应用里的内部连接们就出现…

sqli-labs Basic Challenge Less_1 通关指南

sqli-labs Basic Challenge Less_1 通关指南 测试注入点测试注入点的数据类型测试过程: 测试返回点:测试列数:测试返回点: 收集数据:版本用户权限库名表名与列名 查找敏感信息 测试注入点 在进行SQL注入之前&#xff…