手把手使用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

智能推荐

预留增强_IT养家和SAP养家的博客-程序员宅基地

预留增强METHODif_ex_mb_reservation_badi~data_modify.*BREAK-POINT.DATA:lv_matnrTYPEresb-matnr.lv_matnr=cs_resb-matnr+0(2).IFlv_matnr='91'ORlv_matnr='92'....

微信H5网页调用扫一扫功能(vue)中遇到的问题_有时候h5调用微信扫一扫没反应_林迦叶的博客-程序员宅基地

微信H5网页调用扫一扫功能(vue)中遇到的问题_有时候h5调用微信扫一扫没反应

vulnhub靶机---Minouche_yumiya12的博客-程序员宅基地

一、信息搜集1.打开靶机就会回显IP地址2.使用nmap 探测端口信息发现22,80端口,9090是关闭的,22端口版本较高,所以从80端口入手,探测出来是WordPress的CMS二、漏洞利用知道是wordpress就直接用wpscan扫描wpscan --url http://192.168.1.41 -e u,p 枚举用户名,插件[+] kitty| Found By: Rss Generator (Passive Detection)| Confirmed By:| Au

hung task日志linux,一次内核hung task分析_寒阳碎雪的博客-程序员宅基地

1、内核hung task检测机制由来我们知道进程等待IO时,经常处于D状态,即TASK_UNINTERRUPTIBLE状态,处于这种状态的进程不处理信号,所以kill不掉,如果进程长期处于D状态,那么肯定不正常,原因可能有二:1)IO路径上的硬件出问题了,比如硬盘坏了(只有少数情况会导致长期D,通常会返回错误);2)内核自己出问题了。这种问题不好定位,而且一旦出现就通常不可恢复,kill不掉,通..._hung task

Ubuntu 16.04下搭建 Android 开发环境 -JDK, Android Studio 安装_糊_图的博客-程序员宅基地

安装JDK1、下载最新的jdk安装,地址:http://www.oracle.com/technetwork/java/javase/downloads/2、解压jdk-8u91-linux-x64.gz,我放置在/opt下sudo tar zxvf ./jdk-8u91-linux-x64.gz -C /opt/java这里要注意, intel lij 对路径

spring bean scope 单例与多例_spring声明一个scope单例bean_hello小工的博客-程序员宅基地

如何使用spring的作用域:这里的scope就是用来配置spring bean的作用域,它标识bean的作用域。在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称 prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,_spring声明一个scope单例bean

随便推点

图像处理-灰度变换函数imadjust和stretchlim_cys119的博客-程序员宅基地

imadjust在matlab中imadjust原型如下:g = imadjust(f,[low_in high_in], [low_out high_out], gamma)1f表示一张灰度图片,此函数将f的灰度值映象到g中的新值,也就是将low_in与high_in之间的值映射到low_out和high_out之间的值。 其中low_in以下与high_in以上的值可以被截去,也就...

c语言cin.get的用法,cin,cin.get(),cin.getline(),gets(),getchar()函数的用法-程序员宅基地

1.cin>>用法a:最基本的流输入用法,接受一个数字或字符,自动跳过输入的空格。用法b:接受一个字符串,但是遇到除开头外的空格则会终止输入。#includeusing namespace std;int main(){char a[100];cin>>a;cout<return 0;} 2.cin.get()用法a:无参数,一次从输入行中提取一个字符,包括空格和回车..._c语言 cin.get()函数

Linux 后台开发常用调试工具_linux下载开发调试工具_ispurs的博客-程序员宅基地

01 总览编译阶段nm 获取二进制文件包含的符号信息strings 获取二进制文件包含的字符串常量strip 去除二进制文件包含的符号readelf 显示目标文件详细信息objdump 尽可能反汇编出源代码addr2line 根据地址查找代码行运行阶段gdb 强大的调试工具ldd 显示程序需要使用的动态库和实际使用的动态库strace 跟踪程序当前的系统调用ltrace_linux下载开发调试工具

Canvas: trying to draw too large(138946752bytes) bitmap(试图绘制过大(138946752字节)位图)_drawable-w550dp canvas: trying to draw too large(1_春林初绿的博客-程序员宅基地

问题:在运行程序时崩掉,error中提示Canvas: trying to draw too large(138946752bytes) bitmap,这大概是图片存放的尺寸不太合适解决:检查你的图片在是不是放在了drawable中或者其他包下,把图片文件移到res/mipmap-xhdip下就好了(不同需求,解决方法大概不同)..._drawable-w550dp canvas: trying to draw too large(138946752bytes) bitmap

windows下搭建nginx-rtmp服务器_东边的小山的博客-程序员宅基地

最近一直在研究这些,我想的还是挺多的,想要通过这个在公网上看我推送的视频,可是呢还是有很多的问题,一直没有成功,只能在内网测试通过。怎么搭建?搭建的话我也是参考大神的博客的,人家写的很好,可能下载的东西文档有些出入的,比如我的配置文件名为nginx-win.org,不过思想都是差不多的,都是要在文件中添加rtmp块的,配置个很简单的就行了,不用太复杂。—— [参考],

CVPR2015跟踪算法CFLB原理及代码解析_cvg f ltb_博博有个大大大的Dream的博客-程序员宅基地

文章和代码下载地址:Galoogahi H K, Sim T, Lucey S. Correlation filters with limited boundaries.代码下载地址:http://www.hamedkiani.com/cfwlb.htmlCFLB跟踪算法是通过加空间约束的方式,去除训练相关滤波所存在的边界效应。MOSSE的filter通过最小二乘法来求解:..._cvg f ltb

推荐文章

热门文章

相关标签