手把手使用Python语音识别,进行语音转文字

2023-05-16

目录

0. 太长不看系列,直接使用

识别结果

1. Python调用标贝科技语音识别接口,实现语音转文字

1.1 环境准备:

1.2 获取权限

1.2.1 登录

1.2.2 创建新应用

1.2.3 选择服务

1.2.4 获取Key&Secret

2. 代码实现

2.1 获取access_token

2.2 获取识别文本

2.3 配置接口参数

2.4 完整demo

2.5 执行


0. 太长不看系列,直接使用

在1.2官网注册后拿到APISecret和APIKey,直接复制文章2.4demo代码,确定音频为wav格式,采样率为16K,在命令行执行

python single_sentence_recognition.py -client_secret=你的client_secret -client_id=你的client_id -file_path=test.wav

识别结果

使用中有任何问题,欢迎留言提问。

1. Python调用标贝科技语音识别接口,实现语音转文字

1.1 环境准备:

Python 3

1.2 获取权限

标贝科技 https://ai.data-baker.com/#/?source=qwer12

填写邀请码fwwqgs,每日免费调用量还可以翻倍

1.2.1 登录

点击产品地址进行登录,支持短信、密码、微信三种方式登录。

1.2.2 创建新应用

登录后进入【首页概览】,各位开发者可以进行创建多个应用。包括一句话识别、长语音识别、录音文件识别;在线合成、离线合成、长文本合成。

1.2.3 选择服务

进入【已创建的应用】,左侧选择您需调用的AI技术服务,右侧展示对应服务页面概览(您可查询用量、管理套餐、购买服务量、自主获取授权、预警管理)。

1.2.4 获取Key&Secret

通过服务 / 授权管理,获取对应参数,进行开发配置(获取访问令牌token)

拿到Key和Secret就可以正式使用啦!

2. 代码实现

2.1 获取access_token

在拿到Key和Secret后,我们还需要调用授权接口获取access_token,这个access_token有效时长是24小时。

# 获取access_token用于鉴权
def get_access_token(client_secret, client_id):
    grant_type = "client_credentials"
    url = "https://openapi.data-baker.com/oauth/2.0/token?grant_type={}&client_secret={}&client_id={}"\
        .format(grant_type, client_secret, client_id)

    try:
        response = requests.post(url)
        response.raise_for_status()
    except Exception as e:
        print(e)
        return
    else:
        access_token = json.loads(response.text).get('access_token')
    
    return access_token

2.2 获取识别文本

拿到access_token后,调用语音识别接口,就可以获得识别后文本

# 获取识别后文本
def get_text(file, headers):
    url = "https://asr.data-baker.com/asr/api?"
    response = requests.post(url, data=file, headers=headers)
    code = json.loads(response.text).get("code")
    text = json.loads(response.text).get("text")
    if code != 20000:
        print(response.text)
    
    return text

2.3 配置接口参数

client_secret和client_id:在文章1.2的官网获取,必填

file_path:文件保存路径,必填

audio_format:音频格式,默认wav,根据文件可以自己选填

sample_rate:采样率,默认16000,根据文件可以自己选填

add_pct:是否在静音处添加标点,默认true

# 获取命令行输入参数
def get_args():
    parser = argparse.ArgumentParser(description='ASR')
    parser.add_argument('-client_secret', type=str, required=True)
    parser.add_argument('-client_id', type=str, required=True)
    parser.add_argument('-file_path', type=str, required=True)
    parser.add_argument('--audio_format', type=str, default='wav')
    parser.add_argument('--sample_rate', type=str, default='16000')
    parser.add_argument('--add_pct', type=str, default='true')
    args = parser.parse_args()

    return args

2.4 完整demo

#!/usr/bin/env python
# coding: utf-8

import requests
import json
import argparse


# 获取access_token用于鉴权
def get_access_token(client_secret, client_id):
    grant_type = "client_credentials"
    url = "https://openapi.data-baker.com/oauth/2.0/token?grant_type={}&client_secret={}&client_id={}"\
        .format(grant_type, client_secret, client_id)

    try:
        response = requests.post(url)
        response.raise_for_status()
    except Exception as e:
        print(e)
        return
    else:
        access_token = json.loads(response.text).get('access_token')
    
    return access_token


# 获取识别后文本
def get_text(file, headers):
    url = "https://asr.data-baker.com/asr/api?"
    response = requests.post(url, data=file, headers=headers)
    code = json.loads(response.text).get("code")
    text = json.loads(response.text).get("text")
    if code != 20000:
        print(response.text)
    
    return text


# 获取命令行输入参数
def get_args():
    parser = argparse.ArgumentParser(description='ASR')
    parser.add_argument('-client_secret', type=str, required=True)
    parser.add_argument('-client_id', type=str, required=True)
    parser.add_argument('-file_path', type=str, required=True)
    parser.add_argument('--audio_format', type=str, default='wav')
    parser.add_argument('--sample_rate', type=str, default='16000')
    parser.add_argument('--add_pct', type=str, default='true')
    args = parser.parse_args()

    return args


if __name__ == '__main__':
    args = get_args()

    # 获取access_token
    client_secret = args.client_secret
    client_id = args.client_id
    access_token = get_access_token(client_secret, client_id)

    # 读取音频文件
    with open(args.file_path, 'rb') as f:
        file = f.read()

    # 填写Header信息
    audio_format = args.audio_format
    sample_rate = args.sample_rate
    add_pct = args.add_pct
    headers = {'access_token': access_token, 'audio_format': audio_format, 'sample_rate': sample_rate,
               'add_pct': add_pct}
    text = get_text(file, headers)
    print(text)

2.5 执行

复制所有代码,确定音频为wav格式,采样率为16K,在命令行执行

python single_sentence_recognition.py -client_secret=你的client_secret -client_id=你的client_id -file_path=test.wav

结果

标贝科技 https://ai.data-baker.com/#/?source=qwer12

填写邀请码fwwqgs,每日免费调用量还可以翻倍

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手使用Python语音识别,进行语音转文字 的相关文章

随机推荐

  • i.MX27支持8GBSDHC卡驱动修改

    最近需要给mx27加上SDHC驱动 以支持SDHC的SD卡 网上许多关于2440支持SDHC的文章 xff0c 借鉴很多 xff0c 但是由于MX27驱动的特殊结构 xff0c 需要做更多改动 xff0c 详细如下 xff1a 平台 xff
  • /etc/init.d/rcS文件详解

    我使用的简单rcS文件内容如下 最后的IP地址设定非常重要 xff0c 一定要跟服务器的地址再同一个网段 xff0c 不然会出现无法连接错误 nfs server 192 168 0 102 not responding still try
  • CAN通讯的byte序和bit序

    听别人说起CAN通讯协议的时候总说到Intel格式和motorola格式的时候 Intel格式如何 xff0c Motorola格式又如何 xff1f 觉得很有必要搞懂这些知识 xff0c 也看了相关资料 xff0c 可直到今天还没明白 真
  • ROS学习笔记(一):创建工作空间和功能包

    所有的ROS程序 xff0c 包括我们自己开发的程序 xff0c 都被组织成功能包 xff0c 而ROS的功能包被存放在称之为工作空间的目录下 因此 xff0c 在我们写程序之前 xff0c 第一步是创建一个工作空间以容纳我们的功能包 其实
  • PHP活动报名小程序系统源码 带后台管理程序

    活动报名小程序源码 xff0c 基于thinkphp开发的报名小程序源码 xff0c 带有后台管理 xff0c 用户发布活动信息 报名可以后台管理 xff0c 基本都还是可以的 不过需要注意的是 xff0c 用户注册部分是发送手机短信 xf
  • NVIDIA Jetson Xavier NX部署VINS-fusion-GPU

    组内大佬师兄今天抽出时间总结了一篇博客 xff0c 主要内容是 xff1a 把在阿木P450无人机上 xff0c 对自带的NVIDIA Jetson Xavier NX边缘计算机部署VINS fusion GPU教程 xff0c 并进行实验
  • 接口策略路由配置(通过流策略技术实现)

    策略路由 xff1a xff08 先于路由表 xff0c 且不会生成路由表 xff09 策略路由和路由策略都可以影响数据包的转发过程 xff0c 但他们对数据包的影响方式是不同的 本地策略路由 xff1a 仅对本机 下发的报文进行处理 xf
  • Mac Xcode崩溃 (打开ios项目引起崩溃)

    bug xff1a 每次打开此工程都会导致Xcode崩溃 其他工程没有问题 解决办法 xff1a 1 确定本地跟服务器没有需要更新和提交的代码 2 把本地工程移到废纸篓 3 从新check out工程 4 新工程完美运行 xff08 这样没
  • Mac上VScode使用clang-format格式化c++代码

    一 安装 需要安装插件c c 43 43 xff0c 不推荐使用clang format这个插件 xff0c 毕竟c c 43 43 里面已经支持了clang format格式化操作 安装这个clang format插件也有一个好处 xff
  • C#解决串口通信中接收数据时延迟处理与缓存处理的方法

    C 解决串口通信中接收数据时延迟处理与缓存处理的方法 时间 2011 1 21 14 04 29 来源 www cnblogs com 作者 杨少宁 利用串口进行通信 xff0c 当发送方 xff08 A xff09 将数据写入串口后 xf
  • 在gazebo中对机器人进行控制,并在rviz中同步显示

    在上一篇博客中 xff0c 我一步一步地建立了在gazebo仿真中能用的xacro文件 但是仿真时的模型是自由摆动的 xff0c 文末的时候我想对他进行控制 xff0c 但是篇幅太长 xff0c 所以新开一篇 参考ros control的内
  • 基于esp32-cam的监控小车

    1 购买器材 xff1a Eap32 cam L289N直流步进电机驱动 自锁开关 两节18650电池 5v电源 杜邦线若干 2 程序代码 2 1 下载代码 下载库函数 百度网盘 xff1a 链接 xff1a https pan baidu
  • APP Inventor -环境安装

    APP inventor可以实现直接在网页上操作 1 登录网址 xff1a http ai2 17coding net xff08 我使用的是微软浏览器 xff0c 用谷歌打开时显示无法登录 xff09 选择一键试用 2 下载Ai伴侣 xf
  • App inventor—安安机器人

    1 准备素材 2 程序设计 3 程序编程 3 1 3 2 3 3 总结 xff1a 1 换背景图片的时候 xff0c 设置图片 gt 用文本来存放图片的名称 xff08 特别注意后面的png xff0c 是图片的格式 xff09 2 手机震
  • 按键控制LED灯亮灭——基于arduino单片机

    程序设计 xff1a 函数 xff1a digitalRead 作用 xff1a 用来读取数字串口状态 xff0c HIGH还是LOW xff08 其实还有一种表达方式就是HIGH是 1 LOW是 0 xff0c 只是HIGH LOW更直观
  • JDY-31 蓝牙模块使用(HC-06)

    波特率要相同才能就行通讯 下载串口调试工具 打开串口调试工具 xff0c 配置参数 蓝牙连接 VCC 3 3V GND GND TXD RXD RXD TXD 配置蓝牙参数 发送指令 xff0c 要在指令后面添加 r n xff0c 或者让
  • arduino驱动LD3320语音识别模块

    LD3320 xff1a LD3320 是一颗基于非特定人语音识别 xff08 SI ASR xff1a Speaker Independent Automatic SpeechRecognition xff09 技术的语音识别 声控芯片
  • 无人机学习笔记之电池篇

    电池参数 电池的多少mAh 表示电池容量 xff0c 如1000mah电池 xff0c 如果以1000ma放电 xff0c 可持续放电1小时 如果以500mA放电 xff0c 可以持续放电2小时电池后面多少C 代表电池放电能力 这是普通锂电
  • 指纹锁—AS608指纹模块

    目录 一 工程内容 二 AS608指纹模块使用 1 AS608 与 USB转TTL模块 的接线 2 上位机配置 3 AS608与STC12C60A通讯 三 驱动MG995 xff08 180度舵机 xff09 1 MG995舵机数据手册 2
  • 手把手使用Python语音识别,进行语音转文字

    目录 0 太长不看系列 xff0c 直接使用 识别结果 1 Python调用标贝科技语音识别接口 xff0c 实现语音转文字 1 1 环境准备 xff1a 1 2 获取权限 1 2 1 登录 1 2 2 创建新应用 1 2 3 选择服务 1