有什么录音软件可以转文字(自己实现录音文件转文字)

之前老婆他们单位开会比较多,有一些会议时间比较长,而且会议的内容需要去回顾,所以基本上会议都进行了录音。但回顾录音往往是一个很痛苦的过程,基本上很难定位重点的内容位于录音的哪一部分,再加上有时候有一些现场讨论的情况, 听一次录音比开一次会的时间还要长。


最开始有这种问题的时候,我在网上找了几个做音频文件转文字的软件,要不就是收费太贵,要不就是只支持1分钟的试用,好不容易找到一个勉强能用的,准确率还不太高。不过总算能满足一部分的需求。

昨天老婆又拿回来一个4个小时的音频文件,说要转换成文字。在电脑上翻了翻,之前那个软件已经没办法用了,微信小程序和网上都找不到几个靠谱的,倒是各大云平台服务商推的云平台服务不少,翻了翻发现腾讯的语音识别服务离线语音文件9.9元60个小时,秉承着9.9买不了吃亏,9.9买不了上当的理念,就准备自己整一个试试。

有什么录音软件可以转文字(自己实现录音文件转文字)(1)

(之前用过百度的OCR和识图API,每天有一定的免费次数,不确定其他服务是不是也有免费试用的次数,其他的云平台也可以多了解下,薅下羊毛。)


一、注册一个腾讯云账号,我用绑定银行卡的微信进行的实名认证。二、购买9.9的录音文件识别资源包(这里看了下,正常价格是72块钱60个小时)。

有什么录音软件可以转文字(自己实现录音文件转文字)(2)

订单列表

购买完成后,发现可使用的资源包里面还有一些赠送的资源,不过是一个月之内到期的。

有什么录音软件可以转文字(自己实现录音文件转文字)(3)

资源包详情

三、购买成功之后,在云产品——语音识别当中,可以看到需要的接口文档

有什么录音软件可以转文字(自己实现录音文件转文字)(4)

接口文档

四、调用接口还需要腾讯云平台的SecretId和SecretKey

两个信息在个人头像——访问管理——访问秘钥——API秘钥管理当中创建

有什么录音软件可以转文字(自己实现录音文件转文字)(5)

SecretId和SecretKey的获取

有什么录音软件可以转文字(自己实现录音文件转文字)(6)

创建好的SecretId和SecretKey

五、根据API文档调用接口

接口文档地址为https://cloud.tencent.com/document/product/1093/37823,这里面有个比较坑的地方,上传的录音文件有两个途径传给云平台:

1.通过网络URL地址,前提是你的文件在网络上有个可以公开访问的URL,这里限制文件小于512M,市场小于5个小时

2.通过请求体直接发,限制文件小于5M(我就想问,5M能放点啥

有什么录音软件可以转文字(自己实现录音文件转文字)(7)

参数要求

由于我手头上的文件是4个多小时,140多M,我自认没信心把它能压缩到5M以内,于是抛弃第二种方式。

开始的时候想把文件放到云盘或者网盘上面,看了一圈发现没有哪个云盘和网盘上传上去后能直接访问的,要么是要登录,要么是要输入提取码的。

最后没办法,在我的一台华为云的ECS上装了个nginx,做了一个简单的文件服务器,把文件传到服务器上,才获取了一个可以直接访问录音文件的URL

有什么录音软件可以转文字(自己实现录音文件转文字)(8)

简单的文件服务器

调用的方式倒是比较简单,参照文档上的接口参数列表,以及github上的调用示例,或者腾讯云提供的API Explorer工具进行,我用的Python版本的。

有什么录音软件可以转文字(自己实现录音文件转文字)(9)

接口文档示例

有什么录音软件可以转文字(自己实现录音文件转文字)(10)

API Explorer示例

有什么录音软件可以转文字(自己实现录音文件转文字)(11)

github上调用说明

参考地址:

录音文件转文字API地址:https://cloud.tencent.com/document/product/1093/37823

API Explorer地址:https://console.cloud.tencent.com/api/explorer?Product=asr&Version=2019-06-14&Action=CreateRecTask&SignVersion=

Python调用腾讯云平台介绍:https://cloud.tencent.com/document/sdk/Python

github上腾讯云平台API及文档:https://github.com/TencentCloud/tencentcloud-sdk-python

六、具体代码

前期工作做完之后,代码其实比较简单,主要使用两个接口,一个发送转换的任务,另一个查询转换任务的结果

1.提交转换任务

import json from tencentcloud.common import credential from tencentcloud.common.exception.tencent_cloud_sdk_Exception import TencentCloudSDKException from tencentcloud.asr.v20190614 import asr_client, models try: # cred = credential.EnvironmentVariableCredential().get_credential() cred = credential.Credential("你的SecretId", "你的SecretKey") client = asr_client.AsrClient(cred, "ap-shanghai") req = models.CreateRecTaskRequest() params = { "Action": "CreateRecTask", "Version": "2019-06-14", "EngineModelType": "16k_zh", "ChannelNum": 1, "ResTextFormat": 0, "SourceType": 0, "Url": "http://*****你的网络地址*******/files/chen.m4a" } req.from_json_string(json.dumps(params)) resp = client.CreateRecTask(req) print(resp.to_json_string()) except TencentCloudSDKException as err: print(err)

本来api上说可以通过配置环境变量的方式,增加TENCENTCLOUD_SECRET_IDTENCENTCLOUD_SECRET_KEY两个值,然后通过cred = credential.EnvironmentVariableCredential().get_credential()初始化,但我试了下初始化失败,没弄清问题在哪里,就直接写死了两个值进行初始化。

2.查询转换结果

import json from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import clientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException from tencentcloud.asr.v20190614 import asr_client, models try: cred = credential.Credential("你的SecretId", "你的SecretKey") httpProfile = HttpProfile() httpProfile.endpoint = "asr.tencentcloudapi.com" clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile client = asr_client.AsrClient(cred, "", clientProfile) req = models.DescribeTaskStatusRequest() params = { "Action": "DescribeTaskStatus", "Version": "2019-06-14", "TaskId": 你的任务id,这个值是上个接口返回的信息中的 } req.from_json_string(json.dumps(params)) resp = client.DescribeTaskStatus(req) print(resp.to_json_string()) except TencentCloudSDKException as err: print(err)

七、转换

首先执行了第一个方法,返回了任务

{"Data": {"TaskId": *********}, "RequestId": "*******************"}

我在这里用*号代替,实际上会返回具体的数值

然后执行第二个方法,会返回状态码0,状态waiting(可能需要1个多小时),实际执行的时间我也不太清楚,因为并没有加轮训或者回调,过了6、7个小时候想起来再跑了一遍第二个方法,发现已经执行完成了(实际执行时间应该没这么久)。

附带一部分的执行结果(实际的返回值当中是有\n换行符的,放到word里面需要手动替换成^p换行符)

有什么录音软件可以转文字(自己实现录音文件转文字)(12)

部分转换结果

用word统计了下,4个多小时的语音文件转换了6w多字,准确性基本上OK,就是那个“学琴”我也不懂是啥意思,可能是口音比较重,没转换成功。

有什么录音软件可以转文字(自己实现录音文件转文字)(13)

字数

转换参数当中其实还有一些可选项,可以进行转换调优,比如:

是否开启说话人分离、说话人分离人数、是否进行阿拉伯数字智能转换、是否过滤脏词、是否过滤标点符号、是否过滤语气词等等


转换完成后看了下资源包,优先扣的是赠送的那部分资源,也就是买的60个小时还在。后期考虑自己写个简单的GUI界面,使用方便一点,再加上自动上传音频文件的功能就完美了。

还是自己调API转换比便宜,质量还有保障。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页