最近有个项目需要做视觉自动化处理的工具,最后选用的软件为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博客

本章内容为将短语音转文本的办法,使用百度语音识别,通过百度云短语音的API将WAV音频文件提交到百度云,转换为文字返回。

一、主要内容

使用百度语音识别API(REST API)将WAV音频文件转换为文字的Python脚本

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

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

二、API Key 和 Secret Key获取

进入百度智能云  ->  选择短语音识别标准版 ->  选择开通付费,默认赠送10小时流量,不购买资源

->  实名认证后获得,api key 和 secret key  

在以下页面可以查看API Key 和 Secret Key

三、源代码分析

1. 导入依赖
python
import base64      # Base64编码
import urllib      # URL编码
import requests    # HTTP请求
import json        # JSON处理
import os          # 文件操作
2. 核心函数分析
main() 函数
主要流程:

文件验证:检查音频文件是否存在

文件信息获取:获取文件大小

构建请求:

使用正确的参数格式(format: "wav")

包含音频参数(rate: 16000, channel: 1)

获取access_token

将音频文件转为Base64编码

发送请求:向百度API发送POST请求

响应处理:详细打印响应信息和解析结果

get_file_content_as_base64() 函数
功能:将音频文件转换为Base64编码

支持可选URL编码

使用二进制读取确保兼容性

get_access_token() 函数
功能:获取百度API的访问令牌

使用client_credentials授权模式

包含完整的错误处理

安全地显示token(只显示前20字符)

3. API接口细节
端点:https://vop.baidu.com/server_api
必需参数:

format: 音频格式(wav)

rate: 采样率(16000)

channel: 声道数(1)

token: 访问令牌

speech: Base64编码的音频内容

len: 文件大小

以下为源码:

import base64
import urllib
import requests
import json
import osAPI_KEY = ""#自己的API_KEY
SECRET_KEY = ""#自己的API_KEYdef main():# 使用原始字符串或正斜杠来处理Windows路径audio_file_path = r"C:\Users\Administrator\Desktop\test_16k.wav"# 检查文件是否存在if not os.path.exists(audio_file_path):print(f"错误:文件不存在 - {audio_file_path}")return# 获取文件大小file_size = os.path.getsize(audio_file_path)url = "https://vop.baidu.com/server_api"# 构建请求payloadpayload = json.dumps({"format": "wav",  # 如果是wav文件,应该用wav而不是pcm"rate": 16000,"channel": 1,"cuid": "lOClNo961PMousWYLfpHH22FyeYGHqKr","token": get_access_token(),"speech": get_file_content_as_base64(audio_file_path, False),"len": file_size  # 使用实际的文件大小}, ensure_ascii=False)headers = {'Content-Type': 'application/json','Accept': 'application/json'}try:response = requests.post(url, headers=headers, data=payload.encode("utf-8"))# 打印详细的响应信息print(f"状态码: {response.status_code}")print("响应内容:")print(response.text)# 尝试解析JSON响应try:result = response.json()print("\n解析后的结果:")print(json.dumps(result, ensure_ascii=False, indent=2))except json.JSONDecodeError:print("响应不是有效的JSON格式")except requests.exceptions.RequestException as e:print(f"请求错误: {e}")except Exception as e:print(f"其他错误: {e}")def get_file_content_as_base64(path, urlencoded=False):"""获取文件base64编码:param path: 文件路径:param urlencoded: 是否对结果进行urlencoded :return: base64编码信息"""try:with open(path, "rb") as f:content = base64.b64encode(f.read()).decode("utf8")if urlencoded:content = urllib.parse.quote_plus(content)return contentexcept Exception as e:print(f"读取文件错误: {e}")return Nonedef get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):return: access_token,或是None(如果错误)"""try:url = "https://aip.baidubce.com/oauth/2.0/token"params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}response = requests.post(url, params=params)response.raise_for_status()  # 检查请求是否成功result = response.json()access_token = result.get("access_token")if access_token:print(f"成功获取access_token: {access_token[:20]}...")  # 只显示前20个字符return access_tokenelse:print(f"获取access_token失败: {result}")return Noneexcept requests.exceptions.RequestException as e:print(f"获取access_token请求错误: {e}")return Noneexcept Exception as e:print(f"获取access_token其他错误: {e}")return Noneif __name__ == '__main__':main()

三、效果演示

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

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++闯关笔记】封装②:友元与模板

系列文章目录 第零篇:从C到C入门:C有而C语言没有的基础知识总结-CSDN博客 第一篇:【C闯关笔记】封装①:类与对象-CSDN博客 第二篇:【C闯关笔记】封装②:友元与模板-CSDN博客 第三篇:【C闯关笔…

Python 爬虫教程 | 豆瓣 TOP250 数据抓取与分析实战

一、项目背景与数据价值豆瓣TOP250是影视行业的重要榜单,具有以下数据价值:评分与评价人数:衡量电影市场热度;导演与演员信息:分析人才价值与影视趋势;类型 / 地区 / 年份:洞察电影类型与年代变…

第04章 SPSS简介与数据库构建

参考:SPSS实战与统计思维 - 武松编著 - 微信读书 4.1 SPSS简介 发展历史 全称Statistical Product and Service Solutions,由美国斯坦福大学三位研究生于1968年开发。 对比其他软件成立时间:SAS(1976年)、Stata&…

【ABAP4】数据字典

ABAP数据字典ABAP数据字典概述数据字典的基本对象域数据元素表类型系统创建自定义透明表创建自定义结构锁对象ABAP数据字典概述 ABAP数据字典是SAP定义和管理数据的工具,包含了程序使用的所有对象,数据字典中包括数据库表、视图、数据类型、域、搜索帮助…

不知道Pycharm怎么安装?Pycharm安装教程(附安装包)

Pycharm安装教程(附安装包)获取方式:python开发工具包丨夸克网盘-资源免费下载 有位朋友刚开始学习python,不知道Pycharm要怎么安装,于是问我要一个安装教程。 先介绍一下Pycharm吧,PyCharm是一款python开…

在 Docker 容器中查看 Python 版本

博客目录前言方法一:交互式进入容器查看方法二:启动时直接执行命令方法三:启动后使用 exec 执行命令方法四:直接运行并查看版本(容器退出)方法比较与选择指南实际应用中的注意事项进阶技巧批量检查多个镜像…

React:Umi + React + Ant Design Pro的基础上接入Mock数据

为什么需要Mock数据 前端开发依赖后端接口时的阻塞问题 独立开发和测试的需求 快速迭代和原型验证的重要性 当前版本及框架 React18 Umi 4.0 Ant Design Ant Design Pro 其实这些都不重要,主要是有Umijs,因为Umijs具有开箱即用Mock功能的能力&#…

VMware centos磁盘容量扩容教程

目录前言相关概念磁盘磁盘分区文件系统挂载点物理卷、VG(卷组)、LV(逻辑卷)、LVM(逻辑卷管理)解决方案前言 这篇博客主要分享我在VM中通过docker搭建dify大模型应用平台时,遇到了分配的磁盘容量…

kubernetes中的认证和授权

一 kubernetes API 访问控制Authentication(认证)认证方式现共有8种,可以启用一种或多种认证方式,只要有一种认证方式通过,就不再进行其它方式的认证。通常启用X509 Client Certs和Service Accout Tokens两种认证方式。…

雅菲奥朗SRE知识墙分享(四):『AI已开始重塑劳动力市场,美国年轻科技从业者首当其冲』

近日,据《商业内幕》报道,AI正在重塑美国就业市场,年轻的科技从业者正首当其冲地感受到冲击。高盛首席经济学家Jan Hatzius在本周一撰文指出:“AI 确实开始在各类数据中显现出更加明显的迹象。”据高盛的分析,科技行业…

Python爬虫入门指南:从零开始的网络数据获取之旅

文章目录前言1. 什么是网络爬虫?2. 爬虫的伦理与法律边界3. Python爬虫的基本工具库3.1 Requests:HTTP请求库3.2 Beautiful Soup:HTML/XML解析库3.3 lxml:高效XML/HTML解析器3.4 Selenium:自动化浏览器工具4. 第一个爬…

说说你对JVM的垃圾回收机制的理解?

Java 虚拟机(JVM)的垃圾回收(Garbage Collection,GC)机制是自动管理内存的核心,其核心目标是识别并回收不再被使用的对象所占用的内存,避免内存泄漏和溢出。以下从垃圾判断方法、垃圾回收算法和…

兑换汽水瓶

实现代码:public static void main(String[] args) {Scanner in new Scanner(System.in);while (in.hasNextInt()) {int n in.nextInt();if (n 0) {break;}System.out.println(n / 2);}}

结合 Flutter 和 Rust 的跨平台开发方案

结合 Flutter 和 Rust 的跨平台开发方案 1. 核心思想 本方案的核心思想是Flutter 负责 UI,Rust 负责逻辑 。Flutter 作为一个成熟的 UI 框架,专注于渲染流畅、跨平台一致的用户界面。而将那些对性能、安全和并发有高要求的复杂业务逻辑、计算密集型任务或底层系统操作,全部…

理想汽车智驾方案介绍 2|MindVLA 方案详解

一、引言 MindVLA 主要包括空间智能模块、语言智能模块、动作策略模块、强化学习模块,这些模块分别有以下功能: 空间智能模块:输入为多模态传感器数据,使用 3D 编码器提取时空特征,然后将所有传感器与语义信息融合成…

计算机网络基础(三) --- TCP/IP网络结构(运输层)

运输层1. 概述和运输服务运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能, 运输层协议是在端系统中而不是路由器中实现的, 网络应用程序可以调用多种运输层协议, 如因特网的两种协议: TCP 和 UDP ,每种协议都能为调用的应用程序提供一组不同的运输层服务1.1 运输…

JdbcTemplate和MyBatis的区别

在 Java 后端开发中,JdbcTemplate(Spring 框架提供)和 MyBatis(持久层框架)都是用于简化数据库操作的工具,但它们的设计理念、使用方式、灵活性和适用场景有显著差异。下面从核心定位、核心特性、使用方式、…

埃氏筛|树dfs|差分计数

lc525把数组里的0换成-1&#xff0c;求子数组和为零的最长长度用哈希表记录前缀和首次出现的位置通过找相同前缀和的位置差得出最长的0和1数量相等的子数组长度。class Solution { public:int findMaxLength(vector<int>& nums) {unordered_map<int,int>hashta…

(JVM)Java 对象创建的完整过程

在日常开发和面试中&#xff0c;经常会被问到 “Java 中对象是如何被创建的&#xff1f;” 表面上只是一个 new 关键字&#xff0c;但 JVM 在幕后完成了一系列复杂操作。 可以总结为以下 六大步骤&#xff1a;类加载检查 → 分配内存 → 内存清零 → 设置对象头 → 执行构造函数…

数据库优化提速(三)JSON数据类型在酒店管理系统搜索—仙盟创梦IDE

在 MySQL 中&#xff0c;JSONB 类型&#xff08;MySQL 中实际为 JSON 类型&#xff0c;功能类似 PostgreSQL 的 JSONB&#xff0c;支持高效的 JSON 数据存储和查询&#xff09;非常适合存储半结构化数据&#xff0c;例如酒店入住客人的复杂信息&#xff08;包含客人基本信息、入…