背景

在工作中,对于一些重要的会议,参会内容需要记录下来并整理成文字。随着人工智能的发展,我们考虑借助语音识别来提高效率。

个人搭建模型的话,由于缺乏训练数据,大多用来练手。市面上目前有两大类语音识别的解决方案:一类是科大讯飞和搜狗之类的输入法公司的产品,公司有现成的录音笔可以转文字,价格相对昂贵;另一类是BAT之类的云厂商的人工智能业务,提供在线计算能力和接口,按需付费。

实践

在对比了几家公司的云产品后,发现每家云平台基本每月都会赠送一定量的免费时长,我们以腾讯云为例:
腾讯云录音文件识别介绍
该产品对于本地的语音文件,要求不能超过5M,对应于常见的MP3录制文件,大概只有5分钟。由于会议内容一般都在一个小时以上,目前的产品仍然会限制我们的使用。

对于在线url文件,目前文件大小可以接近5小时,极大方便了长录音文件的语音识别。但会议内容具有一定的保密性,因此大多数情况下无法将文件生成外链暴露在公网上。

如果是保密性较低的长录音内容,可以考虑上传到个人(或所在公司)的服务器或第三方托管网站上生成外链,进行临时识别。
腾讯云 语音识别控制台
在腾讯云平台进行账号注册和认证后,在语音识别的控制台,我们发现功能体验菜单栏下,可以采用交互的方式进行方便的操作,大大减少了代码的编写,提高了产品的用户体验,这也是未来云产品的发展趋势。


针对本地语音文件不得超过5MB的缺点,我们考虑采用大文件分割的方式,将长录音文件分割成若干份不超过5MB的mp3文件,进行逐个识别和校对。我们用python进行简单的编写来实现切割功能:

import os

# 函数file_split
#     file_name : 原文件
#     split_size : 切割大小
def file_split(file_name, split_size) :
    
    # 获取绝对路径
    abs_file_name = os.path.abspath(file_name)
    print("源文件 : " + abs_file_name)

    # 获取相对路径, 文件名, 后缀
    filepath, fullflname = os.path.split(abs_file_name)
    fname, ext = os.path.splitext(fullflname)
    
    try:
        file_num = 0;
        # 打开读文件
        with open(abs_file_name, "rb") as f :
            while True :
                content = f.read(split_size)
                if not content:
                    break
                file_num += 1
                new_file_name = os.path.join(filepath, fname + ('_%04d'%file_num) + ext)
                # 循环写文件
                with open(new_file_name, "wb") as fw :
                    fw.write(content)
    except:
        print("file read error!")

# 主程序开始
file_name = r"D:\feitian\youtube\videoplayback01.mp3"
# 文件切割大小:不到5MB(1M = 1024 * 1024)
split_size = 5 * 1000 * 1000    
# 调用函数
file_split(file_name, split_size)
print("done!")

切割后的文件
然后通过依次上传的形式,可以依次得到识别的结果,并进行逐个校对,一般在所有都识别完之后,也基本上就校对完了。


总结

综上,如果费用充足,可以考虑直接购买现成的录音产品进行体验;如果有一定的编程能力,可以考虑体验以下几家云平台的产品服务,选择一个相对简便且功能强大的进行操作。

预计未来几年,在云平台语音识别的C端业务,几家公司的竞争之处将在于,一方面怎么提高文件大小上限,另一方面怎么减少用户代码量,降低SDK使用难度,完善用户体验。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐