鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: wideband

[已解决]语音识别测试:ConnectionRefusedError: 由于目标计算机积极拒绝,无法连接。

[复制链接]
 楼主| 发表于 2023-3-25 20:28:23 | 显示全部楼层
音频转文字,搜索关键词ok:


  1. # -*- coding: utf-8 -*-
  2. # 使用讯飞语音转写API进行音频转文字#
  3. import base64
  4. import hashlib
  5. import hmac
  6. import json
  7. import os
  8. import time
  9. import requests
  10. import urllib
  11. import re
  12. import paddlehub as hub
  13. mode = hub.Module(name='auto_punc', version='1.0.0')
  14. lfasr_host = 'https://raasr.xfyun.cn/v2/api'
  15. # 请求的接口名
  16. api_upload = '/upload'
  17. api_get_result = '/getResult'


  18. class RequestApi(object):
  19.     def __init__(self, appid, secret_key, upload_file_path):
  20.         self.appid = appid
  21.         self.secret_key = secret_key
  22.         self.upload_file_path = upload_file_path
  23.         self.ts = str(int(time.time()))
  24.         self.signa = self.get_signa()

  25.     def get_signa(self):
  26.         appid = self.appid
  27.         secret_key = self.secret_key
  28.         m2 = hashlib.md5()
  29.         m2.update((appid + self.ts).encode('utf-8'))
  30.         md5 = m2.hexdigest()
  31.         md5 = bytes(md5, encoding='utf-8')
  32.         # 以secret_key为key, 上面的md5为msg, 使用hashlib.sha1加密结果为signa
  33.         signa = hmac.new(secret_key.encode('utf-8'), md5, hashlib.sha1).digest()
  34.         signa = base64.b64encode(signa)
  35.         signa = str(signa, 'utf-8')
  36.         return signa


  37.     def upload(self):
  38.         upload_file_path = self.upload_file_path
  39.         file_len = os.path.getsize(upload_file_path)
  40.         file_name = os.path.basename(upload_file_path)

  41.         param_dict = {}
  42.         param_dict['appId'] = self.appid
  43.         param_dict['signa'] = self.signa
  44.         param_dict['ts'] = self.ts
  45.         param_dict["fileSize"] = file_len
  46.         param_dict["fileName"] = file_name
  47.         param_dict["duration"] = "200"
  48.         data = open(upload_file_path, 'rb').read(file_len)
  49.         response = requests.post(url =lfasr_host + api_upload+"?"+urllib.parse.urlencode(param_dict),
  50.                                 headers = {"Content-type":"application/json"},data=data)
  51.         result = json.loads(response.text)
  52.         return result


  53.     def get_result(self):
  54.         uploadresp = self.upload()
  55.         orderId = uploadresp['content']['orderId']
  56.         param_dict = {}
  57.         param_dict['appId'] = self.appid
  58.         param_dict['signa'] = self.signa
  59.         param_dict['ts'] = self.ts
  60.         param_dict['orderId'] = orderId
  61.         param_dict['resultType'] = "transfer,predict"
  62.         status = 3
  63.         # 建议使用回调的方式查询结果,查询接口有请求频率限制
  64.         while status == 3:
  65.             response = requests.post(url=lfasr_host + api_get_result + "?" + urllib.parse.urlencode(param_dict),
  66.                                      headers={"Content-type": "application/json"})
  67.             result = json.loads(response.text)
  68.             status = result['content']['orderInfo']['status']
  69.             if status == 4:
  70.                 break
  71.             time.sleep(5)
  72.         #print("get_result resp:",result)
  73.         return result

  74. #这里是音乐文件的文件夹
  75. dir_path = r'D:\\pythonProject13\\mp3\\'
  76. fileList=[]

  77. # 输入讯飞开放平台的appid,secret_key和待转写的文件路径
  78. if __name__ == '__main__':
  79.     keyString=['微信','老爸']
  80.     fileList=os.listdir(dir_path)
  81.     for fileName in fileList:
  82.         time.sleep(2)
  83.         print("正在识别:"+fileName)
  84.         dir=dir_path+fileName
  85.         api = RequestApi(appid="1485995d",
  86.                         secret_key="a5fe900e4baff4234241690022143024",
  87.                         upload_file_path=dir)
  88.         res=api.get_result()
  89.         obj=res['content']['orderResult']




  90.         pattern = re.compile("[\u4e00-\u9fff]+")

  91.         # 用正则匹配所有的汉字
  92.         matches = pattern.findall(str(obj))
  93.         sencent = ""
  94.         for i in range(len(matches)):

  95.             sencent += matches[i]


  96.         print(sencent)
  97.         punc_texts = ""
  98.         m = (len(sencent)/10)
  99.         for i in range(10):

  100.             punc_texts += mode.add_puncs(sencent[int(i*m):int(i*m+m)])[0]
  101.         with open("202303292.txt","w") as f:
  102.             f.write(punc_texts)


  103.         for key in keyString:
  104.             if(key in obj):
  105.                 print(fileName+"--检测到关键字【"+key+"】")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表