手把手使用Python语音识别,进行语音转文字_python录音转文字_DataBaker标贝科技的博客-程序员宅基地

技术标签: 深度学习  人工智能  语音接口调用  语音识别  

目录

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,每日免费调用量还可以翻倍

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DataBaker/article/details/117530769

智能推荐

机试题目之删除字符串中出现次数最少的字符_删除字符串中出现次数最少的字符 华为机试 javascript-程序员宅基地

题目 :实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。条件:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。例如 输入abcdd输出为dd#include#include#includeusing namespace std;void main(){_删除字符串中出现次数最少的字符 华为机试 javascript

Html打印需要内容块(Js实现)-程序员宅基地

首先在head里面加入下面一段js代码:function preview(oper) { if (oper < 10) { bdhtml = window.document.body.innerHTML; //获取当前页的html代码 sprnstr = "<!--startprint" + oper +..._eprnstr

PostgreSQL条件判断函数_pgsql 条件判断-程序员宅基地

条件判断函数亦称为控制流程函数,根据满足的条件不同,执行相应的流程。PostgreSQL中进行条件判断的函数为CASE。1.CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END该函数表示,如果expr值等于某个vn,就返回对应位置THEN后面的结果。如果与所有值都不相等,就返回ELSE后面的rn。select case 2 whe..._pgsql 条件判断

php mysql addslashes_PHP反斜杠处理函数addslashes()和stripslashes()的用法_人间最好小师叔的博客-程序员宅基地

PHP 的字符串向数据库写入时,为避免数据库错误,需要对特殊字符进行转义(字符前加上\符号)。如 O’reilly 转义成 O\’reilly,这样可以将数据放入数据库中,而不会出错。这些特殊字符包括:单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)。addslashes函数就是用来做这个添加反斜线的操作,相应的有添加就需要有相应的逆向操作,stripslashes用来删除ad..._stripslashes() addslashes()

tsp 近似算法 matlab,三种解决TSP问题的近似算法的实现_庸常反复的梦的博客-程序员宅基地

【实例简介】最近邻策略(NearestNeighbor)解决TSP问题的算法实现——是基于贪心思想;最短链路策略(ShortestLinkedHeuristic)解决TSP问题的算法实现——也是基于贪心算法,但与上述实现细节有所不同;最短插入启发式策略(NearestInsertion)解决TSP问题的算法实现——插入启发式策略基本思想是对由|V|个城市的某m个城市所构成的回路,陆续地选择一个未在..._tsp近似算法

html开源库,htmlcxx——c++的开源html解析库-程序员宅基地

前几周为实验室处理实验数据,需要将html文件数据转换为xml。在解析html时,在网上搜索了一些解析html的库,发现这个库还是很不错的,其工作原理就是建了一个DOM树。我用的版本是0.85,这篇blog不会说明如何用这个库来编程,而是总结一些使用这个库时需要更改的一些地方,以方便大家使用。首先这个库使用前需要将其编译成lib,第一次编译应该是通过不了的,需要修改utils.cc文件中的第17行..._htmlcxx库

随便推点

mysql outfile 中文乱码_mysql使用select into outfile的乱码问题解决-程序员宅基地

最近在使用select * into outfile 'a.csv' from user;的时候发现一个问题,user表是utf8编码,excel默认编码格式是GBK,excel直接打开时候是一堆乱码。后来想了一个办法中转,先保存成为txt格式,excel打开txt时候会提示选择用哪种编码方式打开,选择utf8解决。脚本如下:SELECT a.*INTO OUTFILE 'a.txt'FIELDS..._into outfile中文乱码

Oracle EBS Interface/API(21)-采购接收入库API_oracle ebs 采购接收api-程序员宅基地

在Oracle EBS与SRM系统成集中,PO接收入库调用SOA服务,客户要求同步处理,之前我们开发通常方法:先将数据插入接口表,再调用接口请求“接收事务处理管理器”,这样的方法会使用对方系统调用服务时间比较长,甚至标准管理器阻塞时,必定会致导调用SOA服务超时。因此,采用Oracle EBS标准的采购接收入库API开发的SOA服务,就不会受标准管理器限制,调用就会即时处理_oracle ebs 采购接收api

python鼠标指定位置截图_python PyAutoGUI 模拟鼠标键盘操作和截屏功能-程序员宅基地

简介一款跨平台/无依赖的自动化测试工具,目测只能控制鼠标/键盘/获取屏幕尺寸/弹出消息框/截屏。安装pip install pyautogui鼠标键盘控制>>> import pyautogui>>> screenWidth, screenHeight = pyautogui.size()>>> currentMouseX, currentMo..._pyautogui location 指定区域截图

Github推荐:超全和超强的中文NLP资源库_中文资源在线-程序员宅基地

超全超强的GitHub开源NLP工具集合。_中文资源在线

java读取*.properties配置文件时,中文乱码解决方法-程序员宅基地

之前项目中用到的代码块(读取配置文件会乱码):public class PropertiesConfig { private static Logger log = Logger.getLogger(PropertiesConfig.class); public PropertiesConfig() { } private static Properties props

推荐文章

热门文章

相关标签