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

开源 python 应用 开发(十)音频压缩

 最近有个项目需要做视觉自动化处理的工具,最后选用的软件为python,刚好这个机会进行系统学习。短时间学习,需要快速开发,所以记录要点步骤,防止忘记。

 链接:

开源 python 应用 开发(一)python、pip、pyAutogui、python opencv安装-CSDN博客

开源 python 应用 开发(二)基于pyautogui、open cv 视觉识别的工具自动化-CSDN博客

开源 python 应用 开发(三)python语法介绍-CSDN博客

开源 python 应用 开发(四)python文件和系统综合应用-CSDN博客

开源 python 应用 开发(五)python opencv之目标检测-CSDN博客

开源 python 应用 开发(六)网络爬虫-CSDN博客

开源 python 应用 开发(七)数据可视化-CSDN博客

开源 python 应用 开发(八)图片比对-CSDN博客

开源 python 应用 开发(九)目标跟踪-CSDN博客

开源 python 应用 开发(十)音频压缩-CSDN博客

开源 python 应用 开发(十一)百度语音识别API-CSDN博客

 推荐链接:

开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客

开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客

开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客

开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-CSDN博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

​​​​​​开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

本章内容为音频的压缩,可以将标准音频的wav文件压缩为16K频率的wav文件。原因是在做AI音频识别的时候,发现百度的ARS语音转文本只能识别16K频率的音频文件,所以编写了这个代码。
 

一、主要内容

代码使用pydub库将音频文件转换为16kHz采样率、单声道WAV文件的Python脚本。

需要安装pydub库,在cmd命令行下安装库

pip install pydub -i https://mirrors.aliyun.com/pypi/simple/

二、源代码分析

1. 导入依赖
python
from pydub import AudioSegment  # 音频处理库
import os  # 操作系统接口
2. 核心函数 convert_to_16k()
功能:将任意音频文件转换为16kHz单声道WAV格式

参数处理逻辑:

如果没有提供输出路径,自动在原文件名后添加"_16k"

使用os.path.splitext()分割文件名和扩展名

音频处理流程:

加载音频:使用AudioSegment.from_file()支持多种格式

打印原始信息:采样率、声道数、时长

转换设置:

set_frame_rate(16000):设置目标采样率

set_channels(1):转换为单声道

导出文件:保存为WAV格式

验证结果:重新加载转换后的文件验证参数

3. 错误处理
使用try-except捕获可能的异常

返回None表示转换失败

以下为源码:

from pydub import AudioSegment
import osdef convert_to_16k(input_path, output_path=None):"""将音频文件转换为16kHz采样率参数:input_path: 输入音频文件路径output_path: 输出音频文件路径(可选,默认为输入文件同目录)"""try:# 如果未指定输出路径,则在原文件名后添加_16kif output_path is None:base_name = os.path.splitext(input_path)[0]output_path = f"{base_name}_16k.wav"# 加载音频文件print(f"正在加载音频文件: {input_path}")audio = AudioSegment.from_file(input_path)# 打印原始音频信息print(f"原始音频信息 - 采样率: {audio.frame_rate}Hz, 声道数: {audio.channels}, 时长: {len(audio)/1000:.2f}秒")# 设置目标采样率为16kHztarget_sample_rate = 16000# 转换采样率和设置为单声道print("正在转换音频...")audio_16k = audio.set_frame_rate(target_sample_rate).set_channels(1)# 导出为WAV文件print(f"正在导出到: {output_path}")audio_16k.export(output_path, format="wav")# 验证转换结果converted_audio = AudioSegment.from_file(output_path)print(f"转换完成! - 新采样率: {converted_audio.frame_rate}Hz, 声道数: {converted_audio.channels}, 时长: {len(converted_audio)/1000:.2f}秒")return output_pathexcept Exception as e:print(f"转换过程中出现错误: {e}")return None# 使用示例
if __name__ == "__main__":input_file = r"C:\Users\Administrator\Desktop\test.wav"output_file = r"C:\Users\Administrator\Desktop\test_16k.wav"# 执行转换result = convert_to_16k(input_file, output_file)if result:print(f"音频转换成功!输出文件: {result}")else:print("音频转换失败!")

三、效果演示

将录音文件test.wav文件放到和python文件同一个目录,运行效果如下,生产了16K频率的音频文件。

http://www.xdnf.cn/news/1345681.html

相关文章:

  • 开源 python 应用 开发(十一)短语音转文本
  • ZKmall模块商城的跨境电商支付安全方案:加密与权限的双重防护
  • 数据结构 -- 树
  • STM32G4-比较器
  • 亚马逊老品怎么再次爆发流量?
  • 计算机内存中的整型存储奥秘、大小端字节序及其判断方法
  • 量子计算基础
  • 豆包AI PPT与秒出PPT对比评测:谁更适合你?
  • 树莓派安装pyqt5 opencv等库一些问题
  • 使用 YAML 文件,如何优雅地删除 k8s 资源?
  • 高并发用户数峰值对系统架构设计有哪些影响?
  • .java->.class->java 虚拟机中运行
  • 设计模式:抽象工厂模式
  • 实验二 Cisco IOS Site-to-Site Pre-share Key
  • 异质结3.0时代的降本提效革命:捷造科技设备技术创新与产业拐点分析
  • 高级SQL优化 | 告别 Hive 中 GROUP BY 的大 KEY 数据倾斜!PawSQL 自适应优化算法详解
  • Logstash——输出(Output)
  • 大视协作码垛机:颠覆传统制造,开启智能工厂新纪元
  • 【CV】OpenCV①——图形处理简介
  • 2025年视频大模型汇总、各自优势及视频大模型竞争焦点
  • 掌握设计模式--命令模式
  • WebRTC 结合云手机:释放实时通信与虚拟手机的强大协同效能
  • elasticsearch的使用
  • C#_高性能内存处理:Span<T>, Memory<T>, ArrayPool
  • vue vxe-gantt 甘特图自定义任务条样式模板 table 自定义插槽模板
  • Vue2 响应式系统设计原理与实现
  • 【Java并发编程】Java多线程深度解析:状态、通信与停止线程的全面指南
  • 多态(polymorphism)
  • celery
  • 学习python第12天