Python语音转文字技术:语音识别与音频切割详解
1视频提取音频
如果你练习时是录的视频,那需要将视频里的语音提取出来,方便后期操作
当然这个过程目前在各个视频剪辑软件里都可以一键分割,例如剪映、必剪、Pr等等
但是当任务量增加的时候,操作就显得非常浪费时间,而用Python的话3行代码就可以提取出来,就算任务量增加最多再加个循环即可
代码如下
from moviepy.editor import AudioFileClip
导入视频
my_audio_clip = AudioFileClip(“一行玩Python/1012 视频转文字/11.mp4”)
提取音频并保存
my_audio_clip.write_audiofile(“一行玩Python/1012 视频转文字/11.wav”)
2音频转文字
提取音频之后就要把音频转成文字了,目前市面上有很多方式都可以快速的将视频里的音频内容转成文字
科大讯飞、知意等付费平台
剪映、Pr等剪辑如案件生成字幕
百度云、腾讯云等国内接口
GOogle、IBM、Bing等国外接口
自己造轮子,语音识别训练
自己一边听一边打字
虽然说有这么多方法可以去实现这个需求,但任务量增长后,想不花钱,又想不花时间造轮子,最好的办法就是用现成的接口
百度接口使用
申请百度接口
如果想用百度接口来批量处理,需要
百度语音API地址:https://cloud.baidu.com/doc/SPEECH/index.html
from aip import AipSpeech
“”" 你的 APPID AK SK “”"
APP_ID = ‘xxx’
API_KEY = ‘xxxxxxxxxxxxxxxxxxxxxxxx’
SECRET_KEY = ‘xxxxxxxxxxxxxxxxxxxxxxxx’
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
读取文件
def get_file_content(file_path):
with open(file_path, ‘rb’) as fp:
return fp.read()
识别本地文件
result = client.asr(get_file_content(‘音频.wav’ % i), ‘wav’, 16000, {
‘dev_pid’: 1537 # 默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格
})
print(result[‘result’])
如果你恰巧是用mac录的音频,那就得对音频进行降频处理
因为百度接口只能识别16 kHz的音频,而mac录的是48 kHz的音频,当然用ffmpeg重采样一下就可以
import ffmpeg
ffmpeg.input(‘输入音频.wav’).output(‘输出音频.wav’, ar=16000).run()
如果的你音频比较长,但是百度短语音识别接口支持1分钟以内的音频,这时候需要对音频进行分割处理
from pydub import AudioSegment
from pydub.utils import make_chunks
#blues文件30s
audio = AudioSegment.from_file(“voice.wav”, “wav”)
size = 30000 #切割的毫秒数
chunks = make_chunks(audio, size) ##将文件切割为59s一块
for i, chunk in enumerate(chunks):
##枚举,i是索引,chunk是切割好的文件
chunk_name = “voice{0}.wav”.format(i)
print(chunk_name)
##保存文件
chunk.export(chunk_name, format=“wav”)
作者:普通网友