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

文章目录

前言一、申请讯飞语音端口1.点击链接进入讯飞平台主页面2.在页面注册自己的个人账户3.申请语音端口4.查看自己的端口编码

二、python代码讲解1.代码如下(实例)2.代码需要修改的部分3.包的导入4.结果演示

总结

前言

基于语音识别(1)进行的完善,修改了60秒断触的问题,另外可以更加方便的调用,语音识别1的链接如下: https://blog.csdn.net/m0_46657126/article/details/124531081

一、申请讯飞语音端口

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

https://www.xfyun.cn/

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

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

3.申请语音端口

ps:申请内容大概像我这样写就行,名字重复的话换一个

4.查看自己的端口编码

二、python代码讲解

1.代码如下(实例)

代码如下(示例):

# -*- encoding:utf-8 -*-

import hashlib

import hmac

import base64

from socket import *

import json, time, threading

from websocket import create_connection

import websocket

from urllib.parse import quote

import logging

import pyaudio

import re

# reload(sys)

# sys.setdefaultencoding("utf8")

class Client():

def __init__(self):

logging.basicConfig()

self.app_id = ""

self.api_key = ""

base_url = "ws://rtasr.xfyun.cn/v1/ws"

ts = str(int(time.time()))

tt = (self.app_id + ts).encode('utf-8')

md5 = hashlib.md5()

md5.update(tt)

baseString = md5.hexdigest()

baseString = bytes(baseString, encoding='utf-8')

apiKey = self.api_key.encode('utf-8')

signa = hmac.new(apiKey, baseString, hashlib.sha1).digest()

signa = base64.b64encode(signa)

signa = str(signa, 'utf-8')

self.end_tag = "{\"end\": true}"

self.ws = create_connection(base_url + "?appid=" + self.app_id + "&ts=" + ts + "&signa=" + quote(signa))

self.trecv = threading.Thread(target=self.recv)

self.trecv.start()

def send(self):

CHUNK = 300 # 定义数据流块

FORMAT = pyaudio.paInt16 # 16bit编码格式

CHANNELS = 1 # 单声道

RATE = 16000 # 16000采样频率

p = pyaudio.PyAudio()

# 创建音频流

stream = p.open(format=FORMAT, # 音频流wav格式

channels=CHANNELS, # 单声道

rate=RATE, # 采样率16000

input=True,

frames_per_buffer=CHUNK)

print("- - - - - - - Start Recording ...- - - - - - - ")

while True:

# file_object = stream.read(CHUNK)

index = 1

while True:

chunk = stream.read(1280)

if not chunk:

break

self.ws.send(chunk)

index += 1

time.sleep(0.04)

# self.ws.send(bytes(self.end_tag.encode('utf-8')))

# print("send end tag success")

def recv(self):

try:

while self.ws.connected:

result = str(self.ws.recv())

if len(result) == 0:

print("receive result end")

break

result_dict = json.loads(result)

# 解析结果

if result_dict["action"] == "started":

print("handshake success, result: " + result)

if result_dict["action"] == "result":

result = ''

result_1 = re.findall('"w":"(.*?)"', str(result_dict["data"]))

for i in result_1:

if i == '。' or i == '.。' or i == ' .。' or i == ' 。':

pass

else:

result += i

print("翻译结果:" + result)

# 写入文本文件

tep = open('tep.txt', 'w', encoding='utf-8')

tep.write(result)

tep.close()

# print("rtasr result: " + result_1)

if result_dict["action"] == "error":

print("rtasr error: " + result)

self.ws.close()

return

except websocket.WebSocketConnectionClosedException:

print("receive result end")

def close(self):

self.ws.close()

print("connection closed")

def runc():

client = Client()

client.send()

if __name__ == '__main__':

logging.basicConfig()

client = Client()

client.send()

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.结果演示

总结

以上主要是对第一篇语音识别的更新,因为很多小伙伴提出了出现的问题,依次对其进行了改进。

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: