当前位置: 首页 > 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博客

本章内容为将短语音转文本的办法,使用百度语音识别,通过百度云短语音的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.xdnf.cn/news/1345663.html

相关文章:

  • 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天
  • 基于Python的伊人酒店管理系统 Python+Django+Vue.js