语音识别转文字python

6 篇文章 0 订阅

# -*- coding: UTF-8 -*-
'''参考
https://blog.csdn.net/qq_43280079/article/details/99684389
https://www.cnblogs.com/nightcatcher/p/11195068.html
https://blog.csdn.net/qq_40550296/article/details/84639380
https://ai.baidu.com/docs#/ASR-API-PRO/top
https://console.bce.baidu.com/ai/?fromai=1#/ai/speech/app/detail~appId=1311671
130xx-----456
pip install baidu-aip
pip install wave
pip install pyaudio
pip install numpy
http://ai.baidu.com/
'''
#从百度AI开放平台创建应用处获取
APP_ID = '17xxx03'
API_KEY = 'UNxxxxxxxxxxxxxxMc'
SECRET_KEY = '9snWxxxxxxxxxxxxxxTvrbusBLU60s'
#--

from aip import AipSpeech
import datetime
import wave
import pyaudio
import numpy
import os
import time

def wave_data1(wf):
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True)
    nframes = wf.getnframes()
    framerate = wf.getframerate()
    # 读取完整的帧数据到str_data中,这是一个string类型的数据
    str_data = wf.readframes(nframes)
    wf.close()
    # 将波形数据转换为数组
    # A new 1-D array initialized from raw binary or text data in a string.
    wave_data = numpy.fromstring(str_data, dtype=numpy.short)
    # 将wave_data数组改为2列,行数自动匹配。在修改shape的属性时,需使得数组的总长度不变。
    wave_data.shape = -1, 2
    # 将数组转置
    wave_data = wave_data.T
    # time 也是一个数组,与wave_data[0]或wave_data[1]配对形成系列点坐标
    # time = numpy.arange(0,nframes)*(1.0/framerate)
    # 采样点数,修改采样点数和起始位置进行不同位置和长度的音频波形分析
    N = 44100
    start = 0  # 开始采样位置
    df = framerate / (N - 1)  # 分辨率
    freq = [df * n for n in range(0, N)]  # N个元素
    wave_data2 = wave_data[0][start:start + N]
    return wave_data2
def record(time):    #录音程序
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 16000 #百度语音接口只提供16000和8000两种采样率在此采样16000采样,如果要8000把下面shibie()第7行16000改成8000
    RECORD_SECONDS =time
    WAVE_OUTPUT_FILENAME = "output.wav"
    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)
    print("* Recording...")
    print('开始说话或者播放声音文件(一分钟),录音为同一个文件夹output.wav')

    frames = []
    for i in range(0,int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)
    print("* done recording")

    stream.stop_stream()
    stream.close()
    p.terminate()
    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()

def shibie1():


    APP_ID = '1xxx3'
    API_KEY = 'UNAxxxxxxrFnMc'
    SECRET_KEY = '9snWxxxxxxxusBLU60s'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    file_handle = open('output.wav', 'rb')
    file_content = file_handle.read()
    result=client.asr(file_content, 'wav', 16000, {'dev_pid': '1936',})
    if result['err_no'] == 0:
        print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + " >> " + result['result'][0])
    else:
        print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + " >> " + "err_no:" + str(result['err_no']))
    answerlog = str(result['result'][0])
    with open("wenzilog.txt", "wt") as rbfile:
        rbfile.write(answerlog)
    time.sleep(2)
    os.startfile('wenzilog.txt')
record(60)#定义录音时间,单位/s
print('录音结束,30秒后为你录音变成文字,文字输出wenzilog.txt,你也可以此时马上覆盖其他现有音频,名字用output.wav')
time.sleep(30)
shibie1()

#

'''

————办公学习——

robin-office2022-322b链接:https://pan.baidu.com/s/1bOFJkeZJQLG6W2TIg2b-qg 码:0322 

内容:(Rogabet-note)老罗云笔记旗舰(md支持)+思源字+libreoffice+ ofd+wps+mso修复及pdf-abbyy+特快找文件,办公格式转化,文件管理,作文搜索+大学各种科目题目 vpw向日葵等

Rogabet-note老罗笔记高级2022322链接:https://pan.baidu.com/s/1wFnI-T6g-NB5ZcC6Vxkmrg 码:0322 

功能: 微信对话和收发zip文件,文字转二维码,可存md\txt\log\xlsx\html\note加密,定时保存防丢失,云保存,插入机器硬件信息,提取csv docx pdf pptx excel里文字插入,朗读,加密,收发邮件且可查记录,pdf双向转化多格式,导出xlsx,下网页或zip等,计时和批量录音转文字 切割wav 不定长录音,批量word\ppt转pdf,并割txt、批量发微信,多表合并 拆分 ,表格数据对比,找文件(关键词\像素),批量提取图中文字,中日英翻译,思维图,数据图表,日历行程,各种解方程, 股票k线数据,网址收藏管理 地图,csv/xlsx转图-数据可视化 网页长图截取  批量表求和,抽取制定行,傻瓜出图表,批量ppt2jpg 批量改多个表格单元格等.

————开发学习——

psy-py-jdk.tools2022-324链接:https://pan.baidu.com/s/1cyAF6OMwlDrHzTIY7FnWew 码:0324 

内容:python模块库和工具文档代码,mysql redis vscode-文本加工py-人脸识别 爬虫笔记 django3-drf-md笔记代码样本 postman navicat jdk8 高中各种科目笔记 xmind w11-7style等

————维修系统——

yolan-pack207链接:https://pan.baidu.com/s/1UNTTbzUT9nsET0j3naYkTA 取码:8888

内容:装机ji活 运行库 必备插件 win11tools,火绒安全,pe, 垃圾屏蔽+优启通37py版,加强数据恢复,装机源txt,mac+装win10指南等

————媒体处理——

Bofey-media209链接:https://pan.baidu.com/s/1kGubk5ciT17LVyE7s7Zr6A 码:0209

内容:VLC,pot播放 驱动精灵 键盘钢琴录音,媒体加工+格式转化,多网络远程vpw系统办公 邮箱,mac-tools 电影歌曲下载工具 python书+维基 路线查询和度盘神器等

————综合———

网址rogabet.xyz点黑图获所有链接,

阿里址www.aliyundrive.com/s/HGft9JyRuDA

以后网站 rogabet.xyz左下角点击src有阿里云装机资源.

综合以上所有的百度链接:https://pan.baidu.com/s/1a_-_M9j7V_lgTI4ZSQBp2Q 码:8888


'''

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rogabet-note

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值