Python音频处理:创建一个正弦波并保存为wav文件

Adobe Audition生成正弦波音频 摘要:在音频开发工作中,经常会用到的1KHZ正弦波去测试,比如经过编解码后,是否会变形,产生pop音等。做音频开发的同学应该比较清楚。本文记录一下,如何用Adobe Audition生成一个正弦波。 打开Adobe Audition 软件 文件------>新建------>音频文件 在弹出的窗口,填写音频文件的一些信息,文件名,设置你想要的采样率,声道数,采样位深度。 此处以48K*16bit为例 设置完成后,生成了一个音频文件 效果------>生成------>音调 设 阅读详情

0. 预备知识

0.1 数字信号基础

在这里插入图片描述

0.2 声学概念基础

在这里插入图片描述

1. 创建一个正弦波

  • 正弦波公式:y(t)= A * sin(2 * pi * f *t)

A 是幅值.
pi 是3.14159.
f 是频率.
t 是样本(也就是横坐标上质点的位置). 由于我们需要将其转换为数字,我们将按采样率进行划分.

  • 变量声明

    import numpy as np
     
    import wave
     
    import struct
     
    import matplotlib.pyplot as plt
     
    # frequency is the number of times a wave repeats a second
     
    frequency = 1000
     
    num_samples = 48000
     
    # The sampling rate of the analog to digital convert
     
    sampling_rate = 48000.0
     
    amplitude = 16000
     
    file = "test.wav"
    
  • 公式:sine_wave = [np.sin(2 * np.pi * frequency * x/sampling_rate) for x in range(num_samples)]

    其中,可以看到这里用 x s a m p l i n g _ r a t e {x} \over {sampling\_rate} sampling_ratex​来表示正线曲线的横坐标x,而sine_wave的值也就曲线对应的y值。

2. 保存为wav文件

  • 参数设置

    nframes=num_samples
     
    comptype="NONE"
     
    compname="not compressed"
     
    nchannels=1
     
    sampwidth=2
    
  • 写入数据

    wav_file=wave.open(file, 'w')
     
    wav_file.setparams((nchannels, sampwidth, int(sampling_rate), nframes, comptype, compname))
    
    for s in sine_wave:
       wav_file.writeframes(struct.pack('h', int(s*amplitude)))
    

主要参考:音频文件基本处理流程

Matlab生产各种正弦波的wav文件 本操作基于一下matlab版本 clear; close all; clc; Df=1; %频率间隔 fs = 48000; %采样频率 T = 1/fs; %采样周期 N=fs/Df %序列点数 time = (N-1)*T; %声音片段的总时长 t=0:T:time; sinewave1_fs = 1000 sinewave2_fs = 2000 vol = ... 阅读详情

相关推荐

音频——C语言生成正弦波并用 I2S 输出

生成一个正弦波数组,MCU 使用 I2S 输出该正弦波,AP 接受从 MCU I2S 端口出来的正弦波数据并测量 THD+N

tyustli 4794

.TXT波形数据转.WAV音频格式python实现_小程序

将固定格式的txt时域波形数据文件转换为可播放的wav音频文件,可自行选择保存路径

weixin_43848766的博客 1091

20Hz到20KHZ 0db测试用音频文件,左右声道测试文件

测试用0db正弦波音频源文件集合打包 . ├── 00. mute.wav ├── 01. 20Hz-0dB-30s.wav ├── 02. 30Hz-0dB-30s.wav ├── 03. 40Hz-0dB-30s.wav ... ... ├── 38. 18KHz-0dB-30s.wav ├── 39. 19KHz-0dB-30s.wav ├── 40. 20KHz-0dB-30s.wav ├── Infinity zero.wav ├── LR Channel.wav ├── musiccut_test.wav ├── pink noise 0db.wav ├── Slow_freq_sweep_61_-0dB_44k.16.wav ├── Slow_freq_sweep_61_-20dB_44k.16.wav ├── Subwoofer-delay-test.wav └── 左右声道及喇叭极性Sound Check_Channel & Phase_10sec.wav

python音频频谱_Python读取WAV音频文件 画频谱的方法

Python 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for writing#读取wav文件的四种信息的函数。期中n...

weixin_39899226的博客 1615

1KHZ正弦波和1KZH方波扫频wav无损音频

可以测试设备audio frequency response已经麦克风的密闭性、一致性 音频时长1分钟,立体声,44100采样率,wav无损格式

音频测试文件:wav格式,双声道(10hz-35khz)频率正弦波,可用于测试

单个时长5秒,双声道,有10Hz、20Hz、30Hz、50Hz、100Hz、200Hz、500Hz、1000Hz、2000Hz、10kHz、15kHz、20kHz、25kHz、30kHz、35kHz可供测试。注意太高频率损伤听力!

使用Python生成音频并保存为MP3文件

要在Python中生成音频并保存为MP3文件,你可以使用多个库,其中pydub和librosa是两个常用的库。pydub非常适合处理音频文件,而librosa适合音频分析和生成。为了生成自定义音频并保存为MP3,通常我们需要结合这两个库,或者使用其他生成音频的方法,再通过pydub进行格式转换。下面是一个简单的例子,演示如何生成一个正弦波音频并保存为MP3文件:pydub依赖于ffmpeg或libav来执行MP3编码。你需要确保ffmpeg已经安装在你的系统上。你可以从下载并安装它。

蜡笔小新星的博客 1767

wav格式-音频正弦波测试信号1Hz-7KHz

正弦音频信号1hz,5hz,10hz,20hz,50hz,100hz,200hz,500hz,1khz,2khz,5khz,6khz,7khz,采样率16KHz,时间长度1S,立体声,8位深度

python音频频谱_Python 读取WAV音频文件 画频谱的实例

Python 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for writing#读取wav文件的四种信息的函数。期中n...

weixin_39869733的博客 1239

声卡测试音频-正弦波-各种频率

正弦波-各种频率 1KHz 10Khz 17Hz 127Hz

STM32H743+YT8512C以太网通信实战:CubeMX与LWIP配置详解

本文详细解析了基于STM32H743微控制器与YT8512C PHY芯片的以太网通信实战方案。通过CubeMX工具进行RMII接口、MPU、时钟树等关键硬件配置,并重点阐述了如何修改LWIP协议栈驱动代码以适配YT8512C芯片,解决了LAN8742驱动不兼容的问题。文章提供了从工程创建、代码适配到调试验证的完整步骤,帮助开发者快速实现稳定可靠的嵌入式网络连接。

weixin_29190573的博客 559

matlab生成wav文件并用python验证

  在进行频谱分析时,发现MATLAB和python读取wav文件的波形不一致,导致不能得出正确结果,为了验证MATLAB和python哪部分有问题,于是有了这篇博客。 1、需求分析    用MATLAB生成一个正弦波并保存为wav文件,然后用python读取这个wav文件画出波形,查看python读取出来的波形和matlab生成的波形是否一致。 2、代码实现 2.1 MATL...

赵至柔的博客 4334

嵌入式设备低功耗设计误区:为什么你的RK3568总是被‘意外’唤醒?

本文深入分析RK3568嵌入式设备低功耗设计中的常见误区,重点探讨唤醒源管理不当导致的意外唤醒问题。通过解析硬件设计陷阱、软件配置错误及系统化审计方法,帮助开发者有效排查和解决GPIO配置、唤醒源设置等关键因素引起的功耗异常,提升设备续航能力。

php55的博客 460

python音频文件的频谱_Python 读取WAV音频文件 画频谱的实例

Python 读取WAV文件importwaveimportstructfromscipyimport*frompylabimport*#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename='1.wav'wavefile=wave.open(filename,'r')# open for writing#读取wav文件的四种信息的函数。期中n...

weixin_39637723的博客 700

Frigate进阶玩法:如何用MQTT和Python脚本扩展你的自定义目标检测算法

本文详细介绍了如何通过MQTT和Python脚本扩展Frigate的自定义目标检测算法,无需修改源码即可实现特殊场景(如工业设备异常、农业病虫害识别)的高效检测。文章涵盖Frigate配置、外部检测服务构建、高级集成技巧及性能优化实践,帮助开发者灵活扩展智能监控能力。

weixin_42662293的博客 349

Android设置鼠标显示的屏幕

【代码】Android设置鼠标显示的屏幕。

薛文旺 670

python绘画音频_Python 读取WAV音频文件 画频谱的实例

python 读取WAV文件 import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for writing#读取wav文件的四种信息的函数。期中...

weixin_34987986的博客 798

Qt开发者必看:QTimer::singleShot的5个实战避坑指南(含lambda和多线程案例)

本文为Qt开发者提供了QTimer::singleShot的5个关键实战避坑指南,涵盖lambda捕获、对象生命周期和多线程安全等核心难点。通过对比错误与正确代码示例,深入解析了如何避免悬空指针、确保线程执行上下文正确以及管理定时任务资源,帮助开发者编写更健壮、可靠的延迟执行代码。

stem5的博客 466

python实现wav的频域_Python 读取WAV音频文件 画频谱的实例

Python 读取WAV文件import waveimport structfrom scipy import *from pylab import *#读取wav文件,我这儿读了个自己用python写的音阶的wavfilename = '1.wav'wavefile = wave.open(filename, 'r') # open for writing#读取wav文件的四种信息的函数。期中n...

weixin_39755824的博客 398

Altium Designer铺铜陷阱:为什么你的死铜总是清除不干净?

本文深入探讨Altium Designer中铺铜操作导致死铜无法清除的常见问题,分析死铜形成的五大诱因,并提供高级参数优化和网络连接性验证技巧。通过调整边界计算精度和泪滴算法设置,有效解决死铜残留问题,提升PCB设计质量与制造良率。

weixin_29169505的博客 359

通信算法之281:大疆DJI无人机ID-DJI DroneID开源工程-相关问题-协议信息问题

ZC序列的参数未知。但是,使用第一个或第二个零相关序列对每个OFDM符号进行相位调整,对于直接相邻于使用过的零相关序列的时间上的OFDM符号工作得很好,但对其它符号效果不佳。由于符号的顺序没有改变,而9 OFDM符号情况下的第一个OFDM符号没有用处,因此本存储库中的脚本对待所有突发都是有9个OFDM符号的,并且不对第一个OFDM符号做任何处理。棘手的地方在于需要生成比数据载波数量(始终为600)多1个的零相关序列,零化中间元素,将生成的样本映射到FFT的中心(采样率决定bin的数量),然后计算IFFT。

leegang12的专栏 1620

STM32 DAC音频生成实战:从正弦波到WAV音乐播放

数模转换器(DAC)是连接数字世界与模拟信号的关键硬件,其核心原理是将离散的数字代码转换为连续的模拟电压。在嵌入式系统中,DAC技术为高保真信号生成提供了基础,广泛应用于音频合成、传感器校准和波形发生等场景。通过结合定时器触发与DMA传输,可实现精准的时序控制与高效数据搬运,从而在资源受限的微控制器上实现实时音频播放。本文以STM32F103的DAC外设为切入点,详细解析如何生成2kHz正弦波并播放WAV音频片段,涵盖数据预处理、硬件电路设计及音质优化等工程实践要点,为嵌入式音频开发提供完整解决方案。

weixin_30372371的博客 391

S/4HANA Private Cloud 与 On-Premise 的 Key User Custom Fields 运输与升级避坑指南

本文探讨了SAP S/4HANA Cloud Private Edition和On-Premise系统中Key User Custom Fields的管理要点。文章指出,Custom Fields涉及元数据生成、对象一致性、传输治理等完整链路,操作不当会导致字段丢失或升级失败。关键建议包括:使用ATO Fiori App管理扩展项与传输绑定,配置正确的job user权限,避免在多系统并行开发同一字段。特别强调升级时需执行CFD_REGENERATE_IN_ONPREMISE报表,并通过标准传输机制推进变更

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

Python中的音频和数字信号处理(DSP)

翻译自Python For Engineers。 1. 创建一个正弦波 在这个项目中,我们将创建一个正弦波,并将其保存为wav文件。 但在此之前,你应该知道一些理论。 频率:频率是正弦波重复一秒的次数。我将使用1KHz的频率。 采样率:大多数现实世界的信号是模拟的,而计算机是数字的。因此,我们需要一个模数转换器将模拟信号转换为数字信号。有关转换器如何工作的详细信息超出了本书的范围。关键是采样率,即...

weixin_30509393的博客 1698

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: Python:一文了解字符串格式化
下一篇: Python 处理字节串:struct.pack和struct.unpack
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值