利用百度语音识别接口将语音转换成文字教程

本文介绍如何利用百度语音识别接口将语音转换成文字,适用于音频配字幕等场景。程序使用Python,仅支持mp3格式且限于英语,转换结果为.srt字幕文件。
摘要由CSDN通过智能技术生成

一、说明

如果有一个工具能识别音视中的语音并转换成文字输出,由于可以复制粘贴而不需要逐字逐句地打,那我们进行为音频配字幕工作时将会事半功倍。

其中的关键点是音文转换,音文转换其实在很多地方都可以看到比如qq,百度搜索,讯飞输入法等等,具体到技术而言前述的三个场景其背后的技术都是一样的,都是利用AI进行语音识别。而且腾讯、百度、讯飞当前都开放了自家的语音识别接口免费使用,本文就是利用的百度语音识别接口实现的转换。

其实就配字幕这种工作而言,当前应该可以实现通过写代码自动给音频文件配上字幕,复制粘贴这步都可以省了,当然这不在本文的实现范围。

另外AI识别有一定的错误率,在我们自己使用qq、百度、讯飞时应该都有体会,更何况开放出来的接口一般都不会是公司产品百分百的能力,所以肯定还是要人工介入修正。

 

二、音文转换程序

2.1 程序说明

官方文档:http://ai.baidu.com/docs#/ASR-API/top

语音识别接口:http://vop.baidu.com/server_api

接口要求:只接受pcm格式音频,请求次数不限但每个音视不能超过60秒

系统环境:Windows-7 X64、Python-3.6.5 X64(miniconda)。minicoda安装可参见“PyCharm+Miniconda3安装配置教程”第二大点,如果直接安装python网上搜搜教程即可。另外需要requests模块所以装完python后需要执行pip install requests安装一下。

gihub地址:https://github.com/PrettyUp/BaiduAI。这里将程序和之前写的程序都放在了BaiduAI项目录,只管其中的vtt目录即可。

程序支持:仅支持mp3格式文件,仅支持英语(要支持普通话将post的dev_pid参数修改为1536即可,参见官方文档)

程序流程:获取video目录下的所有mp3文件并逐个进行处理----将当前要处理的mp3文件使用ffmpeg转换成pcm格式----将生成的pcm文件使用speech-vad-demo切割----将切割后的pcm文件逐个进行音文转换

运行操作:安装好系统环境----将压缩包解压到任意目录----将要转换的mp3文件复制到video文件夹下----使用python运行baiduvi.py文件----程序执行完后在video文件夹下会为各mp3文件生成其同名.srt文件其中即是语音转换成的文字。(首版代码生成的是txt文件,按建议改为直接生成.srt格式字幕文件,操作等使用方式都没改变)如下所示

 

2.2 程序代码

程序自己写的只有一个文件,我这里命名为baiduvi.py

import base64
import json
import os
import time
import shutil
import requests

class BaiduVoiceToTxt():
    # 初始化函数
    def __init__(self):
        # 定义要进行切割的pcm文件的位置。speech-vad-demo固定好的,没的选
        self.pcm_path = ".\\speech-vad-demo\\pcm\\16k_1.pcm"
        # 定义pcm文件被切割后,分割成的文件输出到的目录。speech-vad-demo固定好的,没的选
        self.output_pcm_path = ".\\speech-vad-demo\\output_pcm\\"

    # 百度AI接口只接受pcm格式,所以需要转换格式
    # 此函数用于将要识别的mp3文件转换成pcm格式,并输出为.\speech-vad-demo\pcm\16k_1.pcm
    def change_file_format(self,filepath):
        file_name = filepath
        # 如果.\speech-vad-demo\pcm\16k_1.pcm文件已存在,则先将其删除
        if os.path.isfile(f"{self.pcm_path}"):
            os.remove(f"{self.pcm_path}")
        # 调用系统命令,将文件转换成pcm格式,并输出为.\speech-vad-demo\pcm\16k_1.pcm
        change_file_format_command = f".\\ffmpeg\\bin\\ffmpeg.exe -y  -i {file_name}  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {self.pcm_path}"
        os.system(change_file_format_command)

    # 百度AI接口最长只接受60秒的音视,所以需要切割
    # 此函数用于将.\speech-vad-demo\pcm\16k_1.pcm切割
    def
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值