语音识别(利用python将语音转化为文字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、申请讯飞语音端口
    • 1.点击链接进入讯飞平台主页面
    • 2.在页面注册自己的个人账户
    • 3.申请语音端口
    • 4.查看自己的端口编码
  • 二、python代码讲解
    • 1.代码如下(实例)
    • 2.代码需要修改的部分
    • 3.包的导入
    • 4.结果演示
    • 5.代码所借鉴的原链接
  • 总结


前言

本篇博客讲述利用讯飞端口将语音转化为文字。

一、申请讯飞语音端口

1.点击链接进入讯飞平台主页面

https://www.xfyun.cn/

2.在页面注册自己的个人账户

ps:注册账户是完全免费的,因为我之前已经注册过一个了,这里就不重复介绍了,注册之后看个人情况进行个人认证,这个不影响之后的操作。

3.申请语音端口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ps:申请内容大概像我这样写就行,名字重复的话换一个

4.查看自己的端口编码

在这里插入图片描述
在这里插入图片描述

二、python代码讲解

1.代码如下(实例)

代码如下(示例):

#使用语音
import threading
import websocket
import hashlib
import base64
import hmac
import json
from urllib.parse import urlencode
import time
# 该模块为客户端和服务器端的网络套接字提供对传输层安全性(通常称为“安全套接字层”)
# 的加密和对等身份验证功能的访问。
import ssl
from wsgiref.handlers import format_date_time
from datetime import datetime
from time import mktime
import _thread as thread
import pyaudioSTATUS_FIRST_FRAME = 0  # 第一帧的标识
STATUS_CONTINUE_FRAME = 1  # 中间帧标识
STATUS_LAST_FRAME = 2  # 最后一帧的标识
class Ws_Param(object):# 初始化def __init__(self, APPID, APIKey, APISecret):self.APPID = APPIDself.APIKey = APIKeyself.APISecret = APISecret# 公共参数(common)self.CommonArgs = {"app_id": self.APPID}# 业务参数(business),更多个性化参数可在官网查看self.BusinessArgs = {"domain": "iat", "language": "zh_cn", "accent": "mandarin", "vinfo": 1, "vad_eos": 10000}# 生成urldef create_url(self):url = 'wss://ws-api.xfyun.cn/v2/iat'# 生成RFC1123格式的时间戳now = datetime.now()date = format_date_time(mktime(now.timetuple()))# 拼接字符串signature_origin = "host: " + "ws-api.xfyun.cn" + "\n"signature_origin += "date: " + date + "\n"signature_origin += "GET " + "/v2/iat " + "HTTP/1.1"# 进行hmac-sha256进行加密signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'),digestmod=hashlib.sha256).digest()signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8')authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % (self.APIKey, "hmac-sha256", "host date request-line", signature_sha)authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')# 将请求的鉴权参数组合为字典v = {"authorization": authorization,"date": date,"host": "ws-api.xfyun.cn"}# 拼接鉴权参数,生成urlurl = url + '?' + urlencode(v)# print("date: ",date)# print("v: ",v)# 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致# print('websocket url :', url)return url# 收到websocket消息的处理
def on_message(ws, message):try:code = json.loads(message)["code"]sid = json.loads(message)["sid"]if code != 0:errMsg = json.loads(message)["message"]print("sid:%s call error:%s code is:%s" % (sid, errMsg, code))else:data = json.loads(message)["data"]["result"]["ws"]result = ""for i in data:for w in i["cw"]:result += w["w"]if result == '。' or result == '.。' or result == ' .。' or result == ' 。':passelse:#t.insert(END, result)  # 把上边的标点插入到result的最后print("翻译结果: %s。" % (result))except Exception as e:print("receive msg,but parse exception:", e)# 收到websocket错误的处理
def on_error(ws, error):print("### error:", error)run()# 收到websocket关闭的处理
def on_close(ws):pass# 收到websocket连接建立的处理
def on_open(ws):def run(*args):status = STATUS_FIRST_FRAME  # 音频的状态信息,标识音频是第一帧,还是中间帧、最后一帧CHUNK = 520  # 定义数据流块FORMAT = pyaudio.paInt16  # 16bit编码格式CHANNELS = 1  # 单声道RATE = 16000  # 16000采样频率# 实例化pyaudio对象p = pyaudio.PyAudio()  # 录音# 创建音频流# 使用这个对象去打开声卡,设置采样深度、通道数、采样率、输入和采样点缓存数量stream = p.open(format=FORMAT,  # 音频流wav格式channels=CHANNELS,  # 单声道rate=RATE,  # 采样率16000input=True,frames_per_buffer=CHUNK)print("- - - - - - - Start Recording ...- - - - - - - ")# 添加开始表示 ——start recording——global texttip = "——start recording——"for i in range(0, int(RATE / CHUNK * 60)):# # 读出声卡缓冲区的音频数据buf = stream.read(CHUNK)if not buf:status = STATUS_LAST_FRAMEif status == STATUS_FIRST_FRAME:d = {"common": wsParam.CommonArgs,"business": wsParam.BusinessArgs,"data": {"status": 0, "format": "audio/L16;rate=16000","audio": str(base64.b64encode(buf), 'utf-8'),"encoding": "raw"}}d = json.dumps(d)ws.send(d)status = STATUS_CONTINUE_FRAME# 中间帧处理elif status == STATUS_CONTINUE_FRAME:d = {"data": {"status": 1, "format": "audio/L16;rate=16000","audio": str(base64.b64encode(buf), 'utf-8'),"encoding": "raw"}}ws.send(json.dumps(d))# 最后一帧处理elif status == STATUS_LAST_FRAME:d = {"data": {"status": 2, "format": "audio/L16;rate=16000","audio": str(base64.b64encode(buf), 'utf-8'),"encoding": "raw"}}ws.send(json.dumps(d))time.sleep(1)breakthread.start_new_thread(run, ())def run():global wsParam# 讯飞接口编码wsParam = Ws_Param(APPID='',APIKey='',APISecret='')websocket.enableTrace(False)wsUrl = wsParam.create_url()ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close)ws.on_open = on_openws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}, ping_timeout=2)def runc():run()
class Job(threading.Thread):def __init__(self, *args, **kwargs):super(Job, self).__init__(*args, **kwargs)self.__flag = threading.Event()  # 用于暂停线程的标识self.__flag.set()  # 设置为Trueself.__running = threading.Event()  # 用于停止线程的标识self.__running.set()  # 将running设置为Truedef run(self):while self.__running.isSet():self.__flag.wait()  # 为True时立即返回, 为False时阻塞直到内部的标识位为True后返回runc()time.sleep(1)def pause(self):self.__flag.clear()  # 设置为False, 让线程阻塞def resume(self):self.__flag.set()  # 设置为True, 让线程停止阻塞def stop(self):self.__flag.set()  # 将线程从暂停状态恢复, 如何已经暂停的话self.__running.clear()  # 设置为Falsea = Job()
a.start()

2.代码需要修改的部分

在这里插入图片描述

3.包的导入

Ps:因为没有新的Project Interpreter,所以不记得有什么包需要重新引入,唯一有印象的只有pyaudio了,所以这里就只提供了pyaudio的引入方法,其他的好像直接导入就可以了。

1)首先:下载安装 pyaudio 的 whl 文件
下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
2)该界面上输入ctrl+f,搜索pyaudio
3)下载
重点:一定要根据自己的版本进行下载!!!,每个人不一定是一样的。
在这里插入图片描述
4)记录下载文件的安装路径,如果换位置,则记住新的位置
5)安装
键盘输入win+r,输入cmd打开终端模式
假设我的下载位置为D盘的杂项文件夹,那么可以先利用cd转到D盘
在这里插入图片描述
再转到杂项
在这里插入图片描述

进行安装
在这里插入图片描述
然后输入pip install 文件名称即可
在这里插入图片描述

回车,安装结束

4.结果演示

在这里插入图片描述

5.代码所借鉴的原链接

https://github.com/lixi5338619/lxSpider/blob/main/案例代码/实时语音转写/yuyinTransfer.py

总结

此代码在源代码的基础上进行了改善,将语音识别的exe边框去除了,如果需要做一个界面的话,可以将字符串引入到所对应的页面位置,或窗体位置。本代码还有个局限性就是每隔60s会进行一次重连,大概1s后能重新进行识别,如果还有什么问题欢迎在评论区留言。

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

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

相关文章

chatglm-6b_ptuning error:bash .sh,出现ModuleNotFoundError

文章目录 模型效果演示问题描述分析一分析二 ChatGLM-6B是一个由清华大学和智谱AI联合研发的开源对话语言模型。它是一个支持中英双语问答的对话系统,并在中文方面进行了特别的优化。 该模型基于General Language Model (GLM)架构,具有62亿参数。借助模型…

【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍

用于大型Transformer的8-bit矩阵乘法介绍 原文地址:A Gentle Introduction to 8-bit Matrix Multiplication for transformers at scale using transformers, accelerate and bitsandbytes 相关博客 【深度学习】【分布式训练】Collective通信操作及Pytorch示例 【自…

简单易懂------使用PyTorch实现Chatbot

本系列文章通过通俗易懂的方式介绍强化学习的基本概念,虽然语言通俗,但是内容依旧非常严谨性。文中用很多的公式,对数学公式头疼的读者可能会被吓住,但是如果读者一步一步follow下来,就会发现公式的推导非常自然&#…

Hugging Face Transformer:从原理到实战的全面指南

一、前言 前面我面介绍过ChatGPT的基本原理以及预训练大语言模型的发展史,我们知道ChatGPT和所有预训练大语言模型的核心是什么?其实就是 Transformer,Hugging Face 的火爆离不开他们开源的这个 Transformers 库。这个开源库里有数万个我们可…

[AI存储] NLP 和 AI: 数据存储在推动生成式 AI 工具中的作用

很少有技术现象像新一批生成式 AI 工具(如Dall-E和ChatGPT)那样迅速流行起来。似乎一夜之间,这些引人入胜的新应用正被各种各样的人用于不同的应用 – 从内容原创到邮件和报告撰写、软件开发、内容研究等等。 特别是ChatGPT,由于其…

微信小程序云开发实现一对一即时聊天,发送语音、文件、图片、朋友圈、添加好友等功能

点此源码获取 前几篇博文 前几篇文章实现了,利用云开发的即时通信demo做的仿照微信好友聊天。 本篇文章主要在前几篇的基础上进行的修改,实现 即时一对一聊天,群聊天,发送文件图片,发送语音,更换聊天背景…

微信小程序目前最新的授权登录接口-2021年10月份

微信小程序目前最新的授权登录接口-2021年10月份 效果图: 说明:首先我们需要在app.js里用云函数获取到openid,然后在用户点击登录的时候用获取到的openid去用户表里查询是否有该用户,如果没有就把用户信息写入数据库里的用户表,再…

微信小程序原生接入腾讯云im(单聊,列表,聊天界面,自定义消息,自动回复)

微信小程序原生接入腾讯云im(单聊,列表,聊天界面,自定义消息,自动回复) 发送图片语音消息传送→ 文章目录 1.项目需求 2.参考文档 3.效果图 4.初始化 集成SDK 5.登录 6.会话列表 7.聊天页面 8.遇到的问…

微信小程序接入腾讯云IM即时通讯(发送消息开发步骤)

微信小程序接入腾讯云IM即时通讯(聊天窗口) 1.效果图: 2.功能点 : 1.布局要分左右两边布局,如果是自己为发送消息方,都在右边,对方发送的消息在左边。 2.腾讯云返回的是时间戳,需…

uniapp小程序接入腾讯IM聊天

腾讯IM中创建项目 拿到AppID 与 密钥 下载demo 将debug 文件夹拖到自己项目中 在第一个js文件中填入自己项目的APPID 与密钥 下载(tim-wx-sdk 上传文件 的依赖 看项目所需 import TIM from tim-wx-sdk; import TIMUploadPlugin from tim-upload-plugin; let optio…

用最通俗易懂的语言告诉你什么是信息熵

图和公式都挂了,想看原文的小伙伴去公众号后台回复”信息熵”即可 假设有个考试作弊团伙,需要连续不断地向外传递4选1单选题的答案。直接传递ABCD的ascii码的话,每个答案需要8个bit的二进制编码,从传输的角度,这显然有…

外景黑纱婚纱照高级感十足

婚纱照不止有自然小清新(&还可以暗黑高级 看腻了千篇一律的白色婚纱礼服 炎追求个性、与众不同的仙女们不妨尝试一下黑色婚纱🖤 黑纱不一定只有酷和暗黑 也有法式赫本风的复古优雅 满满的氛围感和高级感 🎬 女生的拖尾黑裙神秘又优雅 …

福州一般拍一套婚纱照要多少钱

随着婚纱摄影行业发展以来,近几年选择婚纱照旅拍的准新人越来越多了。相信每一位新人对于这些都是第一次没有经验的,所以也不太清楚行情,不知道选择怎么样的套餐,那小编就来科普一下现在旅拍的行情,让你们在选择婚纱照…

晒一下我和老婆的婚纱照!

两人一起的 老婆单人的 老婆就是大名鼎鼎的晴天有雨啊! 我单人的

冬天拍婚纱照注意事项 拍出养眼婚纱照

寒冷的冬天来了,对于北方人就要迎接雪花了,在寒冷的冬季进行婚纱摄影,会美丽但是也会“冻人”哦!下面 南京婚纱摄影工作室给大家介绍冬天拍婚纱照注意事项,准新人们可以参考一下哦! 冬天拍婚纱照注意事项 拍出养眼婚纱照 婚纱照 冬…

国内唯美花海 新娘绝美婚纱照

每位新郎都希望有一位仙女般的妻子,新娘也都希望自己是花丛中的花仙子。一组浪漫唯美的花海婚纱照无疑是诠释新人们花仙子梦的最好渠道。下面 青岛摄影工作室 就来给大家盘点一下国内那些唯美的花海。 1、云南罗平油菜花 云南省的罗平。从每年的二月份开始就进入了油…

W ndoWS十p啥意思,婚纱照相册10P是什么意思?入册多少张最合适?

原标题:婚纱照相册10P是什么意思?入册多少张最合适? 在预定婚纱照时,都会谈及相册P数,尺寸大小等等一些相册信息,一般相册的页数有7、10、12、15、20p还有30p的,而我们常见就为10P,那么&#xf…

婚纱照效果 取景很重要

新人们都希望可以有绝美的婚纱照,却又为自身没有绝对的优势而感到沮丧。其实漂亮的婚纱照通过选择适合景点选取一样可以拍出来。 婚纱照应该在选景的时候注意哪些问题,很多人渴望拥有类似杨幂结婚时一样的明星婚纱照,首先在选景的时候&#…

简约复古婚纱照拍摄攻略

当下拍婚纱照也要紧跟时尚潮流,当下拍婚纱照流行什么呢?简约、复古是当下婚纱照拍摄关键词。将时尚复古元素相结合也是当下最受年轻人亲睐的婚纱照拍摄形式,那么如何拍摄简约复古婚纱照呢?下面就跟无锡婚纱摄影一起来看看简约复古…