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”)

    作者:普通网友

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python语音转文字技术:语音识别与音频切割详解

    发表回复