首页 > 其他分享 >怎么利用大厂的API将大段音频转成文本

怎么利用大厂的API将大段音频转成文本

时间:2023-06-18 09:03:03浏览次数:48  
标签:大段 音频 token API result KEY id

  日常办公中,我们经常要开会和写会议纪要。传统模式下,我们需要非常认真地听会议中每一句话,记下自己认为的核心的话,并在会后经过多次修改形成会议纪要。现在,聪明人已 经不那么干了,借助几百块的讯飞录音笔,我们可以一口气录下长达三小时的音频,讯飞还能免费给这些录音笔录制的音频转成文本,且识别率相当高,可谓非常方便。

  不过,假如我们没买录音笔,没借到这样的录音笔或者刚好忘了带,最后只能借助用机来录音的时候,面对这样的音频,该怎么低价、快速转文本,方便我们最后写会议纪要之类的东东呢?

  有钱有VIP的话,这不是问题。比如讯飞听见,报价是0.33元/分钟,差不多20块一个小时,其他厂商提供的To C端的服务,基本价格也是大差不差。如果小爬没有更省钱的方法,自然就不会有这篇博文了。接下来讲讲怎么用厂商API来实现大段的音频转文本。

  这里以百度智能云提供的API接口为例,且看小爬如何写Python脚本,利用这些API,实现低价的音频转文本。看了下百度智能云的官网提供的服务,关于语音识别这块,大概的AI能力有这些:

  基于上面提到的场景,我们需要借助的是【音频文件转写】的能力,我们再简单看下价格,如下图所示:

   计价方式多样,但是总结就是两句话:用的越多价格越低,最高单价也就是1.56元/时。看上去比To C的那些语音转文本的价格实惠多了。那还等什么,赶紧把代码整起来呗?

写代码前,我们需要看看它的技术文档:语音技术 (baidu.com),这里面不仅有接口API,还提供的python的Demo示例。但是你要指望这Demo能直接用,就太天真了。

简单点说,我们需要先在百度智能云上【音频文件转写】的详情页,点击【立即使用】,按照说明,新建一个应用,勾选上需要的AI能力,这样,我们就可以拿到百度给这个应用独有的API_KEY以及SECRET_KEY。

  由于音频很长,所以转文本需要一定的时间,百度给的接口做成异步的了。也就是说我们需要两个脚本,其中一个用来创建转音频的任务,另一个脚本用来请求结果。先来魔改官方给的Demo示例来创建任务,每次的请求之前,我们需要向API接口拿到单次请求的Token,获取Access_token的代码大概如下:

import requests,json,time,ssl
from urllib.request import urlopen,Request
from urllib.error import URLError
from urllib.parse import urlencode
timer = time.perf_counter

ssl._create_default_https_context = ssl._create_unverified_context

#填写百度控制台中相关开通了“音频文件转写”接口的应用的的API_KEY及SECRET_KEY
API_KEY = 'Your API Key'   
SECRET_KEY = 'Your Secret Key'


"""  获取请求TOKEN start 通过开通音频文件转写接口的百度应用的API_KEY及SECRET_KEY获取请求token"""

class DemoError(Exception):
    pass

TOKEN_URL = 'https://openapi.baidu.com/oauth/2.0/token'
# SCOPE = 'brain_bicc'  # 有此scope表示有asr能力,没有请在网页里勾选 bicc
SCOPE = 'brain_asr_async'  # 有此scope表示有asr能力,没有请在网页里勾选
# SCOPE = 'brain_enhanced_asr'  # 有此scope表示有asr能力,没有请在网页里勾选

def fetch_token():
    params = {'grant_type': 'client_credentials',
              'client_id': API_KEY,
              'client_secret': SECRET_KEY}
    post_data = urlencode(params)
    post_data = post_data.encode( 'utf-8')
    req = Request(TOKEN_URL, post_data)
    try:
        f = urlopen(req)
        result_str = f.read()
    except URLError as err:
        print('token http response http code : ' + str(err.code))
        result_str = err.read()
    result_str =  result_str.decode()

#    print(result_str)
    result = json.loads(result_str)
#    print(result)
    if ('access_token' in result.keys() and 'scope' in result.keys()):
        if not SCOPE in result['scope'].split(' '):
            raise DemoError('scope is not correct')
#        print('SUCCESS WITH TOKEN: %s ; EXPIRES IN SECONDS: %s' % (result['access_token'], result['expires_in']))
        return result['access_token']
    else:
        raise DemoError('MAYBE API_KEY or SECRET_KEY not correct: access_token or scope not found in token response')

"""  获取鉴权结束,TOKEN end """

 

  拿到Access_Token后,我们就可以根据API创建任务了,示例代码如下:

"""  发送识别请求 """

#待进行语音识别的音频文件url地址,需要可公开访问。建议使用百度云对象存储(https://cloud.baidu.com/product/bos.html)
def create_task(speech_url):
    url = 'https://aip.baidubce.com/rpc/2.0/aasr/v1/create'  #创建音频转写任务请求地址
    body = {
        "speech_url": speech_url,
        "format": "wav",        #音频格式,支持pcm,wav,mp3,音频格式转化可通过开源ffmpeg工具(https://ai.baidu.com/ai-doc/SPEECH/7k38lxpwf)或音频处理软件
        "pid": 1537,        #模型pid,1537为普通话输入法模型,1737为英语模型
        "rate": 16000       #音频采样率,支持16000采样率,音频格式转化可通过开源ffmpeg工具(https://ai.baidu.com/ai-doc/SPEECH/7k38lxpwf)或音频处理软件
    }

    token = {"access_token":fetch_token()}
    headers = {'content-type': "application/json"}
    response = requests.post(url,params=token,data = json.dumps(body), headers = headers)
    # 返回请求结果信息,获得task_id,通过识别结果查询接口,获取识别结果
    textMsg=response.json()
    print(textMsg)
    return textMsg.get("task_id")

  需要注意的是,该API不支持读本地的音频文件,而是要求提起将音频上传到公网上,要支持公开访问,这个方法中的Speech_url参数,它指的是待进行语音识别的音频文件url地址,官方建议使用百度云对象存储(https://cloud.baidu.com/product/bos.html),不过小爬在写这个例子的时候,这个官网莫名其妙加载非常慢,体验很差,具体原因不详,最好小爬只好选择了其他厂商的类似服务,比如七牛云。不用担心,对于普通用户,有10GB的免费的每月存储空间。另外,这个方法最终可以返回任务的Task_id,它的重要性不言而喻,我们就是通过它来得到最终的结果。

 

  开通七牛云账号之后,我们按照提示,将待转的音频存储到七牛云存储服务器 公开路径。限于篇幅,小爬对具体的操作就不过多赘述了。这里必须是公开路径,否则百度的API没法访问私有的七牛云生成的存储音频的URL。你在担心信息暴露了对不对?哈哈,你的URL不到处分享,即使在公网上,也不会有人知道的。另外,如果实在担心,我们可以利用它创建完任务并成功转为文本后,再去账号上删除这段音频,这下顾虑可以打消了吧?

  万事俱备后,我们需要结合查看结果的api来获取最终的文本,对了,获取结果的API,同样是需要事先申请Token的,您需要再次借助上面提到的fetch_token方法。当token和task_id都准备好之后,剩下的事儿就简单多了,示例如下:

"""  发送查询结果请求 """

#转写任务id列表,task_id是通过创建音频转写任务时获取到的,每个音频任务对应的值
task_id_list = [
    "task_id",
    ]   

for task_id in task_id_list:

    url = 'https://aip.baidubce.com/rpc/2.0/aasr/v1/query'  #查询音频任务转写结果请求地址

    body = {
        "task_ids": [task_id],
    }

    token = {"access_token":fetch_token()}

    headers = {'content-type': "application/json"}

    response = requests.post(url,params=token,data = json.dumps(body), headers = headers)


    print(json.dumps(response.json(), ensure_ascii=False))

  赶紧学起来吧,可以帮您省下好多银子呢,这些银子用来干啥不香呢?如果您技术过硬,还可以利用大厂的这些api搭建自己的AI服务,创建自己的【语音转文本】To C产品,这差价不是挣得美滋滋?

快来关注本公众号 获取更多爬虫、数据分析的知识!

 

标签:大段,音频,token,API,result,KEY,id
From: https://www.cnblogs.com/new-june/p/17488682.html

相关文章

  • 如何过滤敏感词免费文本敏感词检测接口API
    @目录前言一、文本敏感词检测API二、使用步骤1、接口2、请求参数三、案例和demo前言敏感词过滤是随着互联网社区发展一起发展起来的一种阻止网络犯罪和网络暴力的技术手段,通过对可能存在犯罪或网络暴力可能的关键词进行有针对性的筛查和屏蔽,很多时候我们能够防患于未然,把后果严......
  • API
    Restfulapi和传统api1.什么是RestfulAPIRestfulAPI从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest。rest不是一个技术,也不是一个协议。rest指的是一组架构约束条件和原则,提供了一个新的架构设计思路,满足这些约束条件和原则的应用程序或设计就是RESTful。在RES......
  • Java_Base4之多态、api使用、字符串方法学习
    一、多态Polymorphism少写代码概念:用父类的类型来接收子类的对象先决条件: 继承/接口实现 父类类型接收子类对象 //实现扩展性优点: 扩展性强,解决了代码复用,降低类型耦合度 可以少定义变量,少些重复代码。 案例:一个方法接受不同的子类类型。缺点: 不能使用子类特有方法 ......
  • python--python脚本中保存处理后的音频文件到指定文件夹时报错permission denied 的问
    问题1:自己编写的python脚本中,将处理后的音频文件保存到指定的文件夹(用到了pydub库对音频文件进行处理),但保存处理后的文件到指定文件夹时,会报错permissiondenied的错误,如下截图解决思路:一开始网上查资料,基本上都是说文件夹没有读写权限,让设置文件夹权限等操作,但设置了之后还是......
  • 深入理解API接口:连接应用程序的关键
    在当今数字化时代,应用程序的互联互通变得至关重要。而在应用程序之间进行通信和数据交换的核心工具就是API接口。无论是在移动应用、网站开发还是系统集成领域,了解和掌握API接口的原理和使用方法都是一项重要的技能。API,全称为应用程序编程接口(ApplicationProgrammingInterface......
  • 如何通过店铺 ID 获取淘宝店铺商品数据上传至京东店铺,整店商品数据搬家,淘宝店铺所有商
    在电商行业还是销量为王,因此在很多相关行业,比如商品搬家行业都需要用到相关的商品详情信息,但是官方一般又没有开放这些接口,怎么办?  解决方案现在很多是通过爬虫获取数据,但是根本扛不住大量调用,不稳定,真能稳定获取了也不是一般人有能力去做的,加上淘宝变化频繁,防爬越来越严,技术难......
  • ServiceAccount 访问API实验
    概念SA账号是Pod内的进程使用的关联服务账号的身份,向集群的API服务器进行身份认证。SA(服务账号)是针对运行在Pod中的应用进程而言的,在Kubernetes中这些进程运行在容器中,而容器是Pod的一部分配置SAapiVersion:v1kind:ServiceAccountmetadata:name:sa-testnames......
  • 通过API接口获取淘宝商品详情的优势
    淘宝是中国最大的B2C电商平台之一,其中的淘宝商品数量大约超过5亿,是众多电商平台当中规模最大的一个,可谓是无所不能,集合了商品的数量、品种、质量、价格、促销、评价等多种信息。对于电商企业来说,淘宝的商品信息是不可或缺的,因此如何快速、方便地获取淘宝商品的详情信息是个非常重......
  • What is API Gateway Notes, API Driven Dev Notes
    APIDrivenDevelopmentWhatisAPIDrivenDevelopment?APIDrivenDevelopmentisaprocessthatallowsdeveloperstofocusonAPIdesignbeforewritingcode.Theideais,beforeyoustartwritingyoursoftware,youfirstdesignandagreeonwhattheAPIw......
  • 对接安心签第三方api(cfca)
    这里用测试企业说明 注册首先前往安心签的测试平台(安心签的技术人员给)注册账号,注册完之后报你的测试企业或者注册号码让他们审核通过; 证书下载审核通过后,安心签的技术人员会给你发两码,也就是序列号和授权码,拿到这个之后进行证书下载,进入安心签的证书格式转化测试系统,填写序列号......