本地录音调用百度语音识别接口

#!/usr/bin/env python
import requests
import json
import base64
import pyaudio
import wave
import os
import psutil

#首先配置必要的信息
def bat(voice_path):
    baidu_server = ‘https://aip.baidubce.com/oauth/2.0/token?‘
    grant_type = ‘client_credentials‘
    client_id = ‘uj70rS1LiwZ9sQDvMSUqKsie‘ #API KEY
    client_secret = ‘Q88eav41PzeNLczZ3hlRjhR8e4WShXwD‘ #Secret KEY   这里可以自己去百度注册,这里是我的API KEY 和 Secret KEY

    #合成请求token的url
    url = baidu_server+‘grant_type=‘+grant_type+‘&client_id=‘+client_id+‘&client_secret=‘+client_secret

    #获取token
    res = requests.get(url).text
    data = json.loads(res)
    token = data[‘access_token‘]

    #设置音频的属性,采样率,格式等
    VOICE_RATE = 8000
    FILE_NAME = voice_path
    # USER_ID = ‘16241950‘ #这里的id随便填填就好啦,我填的自己昵称
    FILE_TYPE = ‘wav‘
    CUID="wate_play"
    #读取文件二进制内容
    f_obj = open(FILE_NAME, ‘rb‘)
    content = base64.b64encode(f_obj.read())   # 百度语音识别需要base64编码格式
    speech = content.decode("utf-8")
    size = os.path.getsize(FILE_NAME)

    #json封装
    datas = json.dumps({
        ‘format‘: FILE_TYPE,
        ‘rate‘: VOICE_RATE,
        ‘channel‘: 1,
        ‘cuid‘: CUID,
        ‘token‘: token,
        ‘speech‘: speech,
        ‘len‘: size,
        "dev_pid":"1536"
    })
    return datas

#设置headers和请求地址url
def post(datas):
    headers = {‘Content-Type‘:‘application/json‘}
    url = ‘https://vop.baidu.com/server_api‘
    # url = "http://vop.baidu.com/server_api"

    #用post方法传数据
    request = requests.post(url, datas, headers)
    result = json.loads(request.text)
    text = result.get("result")
    if result[‘err_no‘] == 0:
        return text
    else:
        return "Error"

def get_audio(filepath):
    input("回车开始录音 >>>")     #输出提示文本,input接收一个值,转为str,赋值给aa
    CHUNK = 256                 #定义数据流块
    FORMAT = pyaudio.paInt16    #量化位数(音量级划分)
    CHANNELS = 1               # 声道数;声道数:可以是单声道或者是双声道
    RATE = 8000                # 采样率;采样率:一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHz
    RECORD_SECONDS = 5          #录音秒数
    WAVE_OUTPUT_FILENAME = filepath     #wav文件路径
    p = pyaudio.PyAudio()               #实例化

    stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)
    print("*"*10, "开始录音:请在5秒内输入语音")
    frames = []                                                 #定义一个列表
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):      #循环,采样率11025 / 256 * 5
        data = stream.read(CHUNK)                               #读取chunk个字节 保存到data中
        frames.append(data)                                     #向列表frames中添加数据data
    # print(frames)
    print("*" * 10, "录音结束\n")

    stream.stop_stream()
    stream.close()          #关闭
    p.terminate()           #终结

    wf = wave.open(WAVE_OUTPUT_FILENAME, ‘wb‘)                  #打开wav文件创建一个音频对象wf,开始写WAV文件
    wf.setnchannels(CHANNELS)                                   #配置声道数
    wf.setsampwidth(p.get_sample_size(FORMAT))                  #配置量化位数
    wf.setframerate(RATE)                                       #配置采样率
    wf.writeframes(b‘‘.join(frames))                            #转换为二进制数据写入文件
    wf.close()              #关闭
    return

def check_disk():
    list_drive = psutil.disk_partitions()  # 找出本地磁盘列表,保存的是结构体对象
    list_disk = []
    for drive in list_drive:
        list_disk.append(drive.device)
    return list_disk

if __name__ == ‘__main__‘:
    list_disk = check_disk() # 检索本地磁盘
    dirname_path = os.path.join(list_disk[0], "voice") # 设置语音文件存放路径,
                                                                   (mac os下需要自己定存储路径)
    if not os.path.exists(dirname_path):
        os.makedirs(dirname_path)

    filename = "voice.wav"  # 定义语音文件名
    in_path = os.path.join(dirname_path, filename)

    get_audio(in_path) # 录音

    datas = bat(in_path) # 封装百度语音识别需要的配置信息,返回请求头
    res = post(datas) # 连接百度语音识别接口,得到识别结果
    print("识别结果:",res[0])

实现效果:

在上述代码中,需要装到requests、psutil、pyaudio等库,其中pyaudio这个库在python3环境下装比较特殊,

windows环境下具体步骤如下:

第一步:下载whl文件支持

url:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio

注意不要下载错了,资源很多

第二步:打开cmd,cd 进入下载的whl所在目录

执行命令:pip install Twisted-18.7.0-cp36-cp36m-win_amd64.whl     #  下载的什么版本,后面就跟什么版本

第三步:执行命令:pip install pyaudio     安装

如果本地同时装有python2和python3,想装到python3里可以在cmd命令里把 pip 改成 pip3 即可

mac os 下安装pyaudio步骤如下:

到这里就结束啦!

给个赞呗~

原文地址:https://www.cnblogs.com/dongxixi/p/10862759.html

时间: 2024-09-30 06:26:28

本地录音调用百度语音识别接口的相关文章

python调用百度语音识别接口实时识别

1.本文直接上干货 奉献代码:https://github.com/wuzaipei/audio_discern/tree/master/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB 2.安装依赖包 pip install 依赖包路径 3.具体步骤见下 安装百度语音识别SDK pip install baidu-aip 安装Python音频处理库 PyAudio python -m pip install pyaudio 安装鼠标控制库 PyUserInput pip

利用百度语音识别接口将语音转换成文字教程

一.说明 如果有一个工具能识别音视中的语音并转换成文字输出,由于可以复制粘贴而不需要逐字逐句地打,那我们进行为音频配字幕工作时将会事半功倍. 其中的关键点是音文转换,音文转换其实在很多地方都可以看到比如qq,百度搜索,讯飞输入法等等,具体到技术而言前述的三个场景其背后的技术都是一样的,都是利用AI进行语音识别.而且腾讯.百度.讯飞当前都开放了自家的语音识别接口免费使用,本文就是利用的百度语音识别接口实现的转换. 其实就配字幕这种工作而言,当前应该可以实现通过写代码自动给音频文件配上字幕,复制粘贴

delphi调用百度语音识别REST API

delphi调用百度语音识别REST API-20160616-感谢 魔术猫 和 DelphiTeacher 兄的帮助解决了返回中文乱码的问题!-注:语音的录音格式目前只支持评测8k/16k采样率16bit位深的单声道语音 压缩格式支持:pcm(不压缩).wav.opus.speex.amr.x-flac var sUrl, sLan, cuid, apiKey, secretKey, token, sR: string;  response: TStringStream; Stream: TF

Winform调用百度地图接口简单示例

1.首先用一个html文件调用百度地图接口(主要注册一个序列号):   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>

Winform调用百度地图接口

using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace BaiDuMap { public partial class Form1 : Form { public Form

调用百度地图接口

1.注册个百度地图账号 获取key值秘钥 如下:<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6mrUxtrtYxTopSt9rcKbBNEDjmss9nLg"></script> 2.代用百度地图里面的原码 3..注意 // 百度地图API功能  // 创建Map实例时 需要改下百度地图里的原码var map = new BMap.

C#调用百度语音识别小Demo

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Threading; using Newtonsoft.Json.Linq

微信服务开发——读取百度音乐接口返回音乐

最近用了很多网上的坑爹接口,都泪奔了,不说了,都是泪啊~ 前两天做了个微信返回音乐的接口,先来看下效果: 出来之后在手机微信里面就可以实现音乐播放了. 技术很简单,首先访问百度音乐接口,传入音乐名称和歌手名称,然后百度会返回一个XML格式给你,里面包括音乐的链接地址等信息.但是比较坑爹的是,这里的链接地址是写在两个node里面的,我要先从一个encode里面拿到前半段,然后再从deconde里面拿到后半段,然后拼起来,拿到URL之后,就要把这个信息放到返回给用户的音乐信息里面. 先来看下微信里面

Python调用百度接口(情感倾向分析)和讯飞接口(语音识别、关键词提取)处理音频文件

本示例的过程是: 1. 音频转文本 2. 利用文本获取情感倾向分析结果 3. 利用文本获取关键词提取 首先是讯飞的语音识别模块.在这里可以找到非实时语音转写的相关文档以及 Python 示例.我略作了改动,让它可以对不同人说话作区分,并且作了一些封装. 语音识别功能 weblfasr_python3_demo.py 文件: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 """ 4 讯飞非实时转写调用demo(语音识别)