当前位置: 首页 > news >正文

如何正确处理音频数据:16位整数与32位浮点数

在音频处理领域,音频数据的格式对后续的分析和处理至关重要。常见的音频格式包括16位整数和32位浮点数。本文将介绍如何正确处理这两种格式的音频数据,包括使用 scipy.io.wavfile 读取音频、使用 librosa 进行处理,以及使用 soundfilesf)写入音频文件。

1. 16位整数音频

在这里插入图片描述

1.1 读取音频

16位整数音频通常以 int16 格式存储。使用 scipy.io.wavfile 读取音频文件时,返回的数据类型为 numpy.int16

import numpy as np
from scipy.io import wavfile# 读取 WAV 文件
sample_rate, audio_data = wavfile.read('your_audio_file_16bit.wav')# 打印数据类型和范围
print(f'Data type: {audio_data.dtype}')
print(f'Data range: {audio_data.min()} to {audio_data.max()}')

1.2 处理音频

在使用 librosa 处理音频数据之前,需要将16位整数数据转换为浮点数格式,并归一化到 [-1, 1] 的范围。

import librosa# 如果数据是整数格式(例如 int16),则需要归一化
if audio_data.dtype == np.int16:audio_data = audio_data.astype(np.float32) / 32768.0  # 归一化到 [-1, 1]# 使用 librosa 进行处理
audio_data_processed = librosa.effects.preemphasis(audio_data)

1.3 写入音频

使用 soundfile 库将处理后的音频数据写入文件时,需要将浮点数数据转换回16位整数格式(如果需要)。

import soundfile as sf# 将浮点数数据转换为 int16
audio_data_int16 = (audio_data_processed * 32768).astype(np.int16)# 写入 WAV 文件
sf.write('output_16bit.wav', audio_data_int16, sample_rate)

2. 32位浮点音频

在这里插入图片描述

2.1 读取音频

32位浮点音频通常以 float32 格式存储。使用 scipy.io.wavfile 读取音频文件时,返回的数据类型为 numpy.float32

# 读取 WAV 文件
sample_rate, audio_data = wavfile.read('your_audio_file_32bit.wav')# 打印数据类型和范围
print(f'Data type: {audio_data.dtype}')
print(f'Data range: {audio_data.min()} to {audio_data.max()}')

2.2 处理音频

32位浮点音频数据通常已经在 [-1, 1] 的范围内,因此可以直接使用 librosa 进行处理。

# 使用 librosa 进行处理
audio_data_processed = librosa.effects.preemphasis(audio_data)

2.3 写入音频

使用 soundfile 库将处理后的音频数据写入文件时,可以直接写入浮点数数据。

# 写入 WAV 文件
sf.write('output_32bit.wav', audio_data_processed, sample_rate)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/255102.html

相关文章:

  • 如何自建服务器并开启公网IP:本地内网网址让外网访问详细教学
  • EasyExcel学习笔记
  • 基于OpenSSL实现AES-CBC 128算法的 SeedKey DLL的生成与使用
  • 搜索二维矩阵II
  • Subway Surfers Blast × 亚矩阵云手机:手游矩阵运营的终极变现方案
  • SSE 流与普通 HTTP 响应的区别
  • Spring AI 项目实战(九):Spring Boot + Spring AI Tools + DeepSeek 进阶实战——调用第三方系统(附完整源码)
  • 「Linux文件及目录管理」硬链接与软连接
  • 63 网络交互的过程中目标设备的选择
  • cartographer官方指导文件说明---第3章 cartographer前端算法流程介绍
  • Docker 容器技术入门与环境部署
  • ECK 简化:在 GCP GKE Autopilot 上部署 Elasticsearch
  • vite+vue3+uniapp引入uview-plus 无效 报警告
  • 无人机低空经济十大前沿创新应用探索-具体做无人机什么呢?优雅草卓伊凡
  • Vuex(一) —— 集中式的状态管理仓库
  • C++ 11 std::unique_ptr 自定义删除器
  • 利用 Python 爬虫获得微店商品详情
  • 游戏架构中的第三方SDK集成艺术:构建安全高效的接入体系
  • C语言:实现杨辉三角的种方法
  • 二分查找----1.搜索插入位置
  • 基于Spring+MyBatis+MySQL实现的监考安排与查询系统设计与实现(附源码+数据库)推荐!
  • OCCT基础类库介绍:Modeling Algorithm - Sewing
  • 使用docker-compose安装kafka
  • FramePack 安装指南(中文)
  • Java八股文——数据结构「排序算法篇」
  • Power Apps - 尝试一下PowerApps中的Plan功能
  • 电子电气诊断架构 --- HPC车载诊断
  • 分布式系统中的 Kafka:流量削峰与异步解耦(二)
  • Ubuntu 22.04LTS下安装D435i深度相机的驱动
  • STM32:AS5600