使用短语音识别接口识别长语音文件
天呐快看那头猪 发布于2021-12 浏览:1726 回复:0
0
收藏

一、背景

目前AI接口-短语音识别只能识别60s以下的音频文件,于是我使用短语音识别接口自行实现了识别长语音的功能,可用于类似会议记录等需要识别长语音的场景;

二、技术方案简介

1.将长语音文件分割为60s以下的短语音片段;

2.然后对短语音文件循环调用短语音识别接口,逐个获取到识别结果;

3.将识别结果进行拼接,统一写入到本地的txt文本文件中,记录下来;

三、具体实现的步骤

1.这里使用的python实现,pydub库可以很好的对语音文件进行分割,可以自定义切割的时长,在60s以下即可

##audio 需要识别的长语音文件

longAudio = '/Users/v_jingxiaowen/Downloads/c.wav' # 只支持 pcm/wav/amr

## 文件格式

format = longAudio[-3:];  # 文件后缀只支持 pcm/wav/amr/m4a

segmentAudio = AudioSegment.from_file(longAudio, format)

 

size = 50000  ##切割的毫秒数

 

chunks = make_chunks(segmentAudio, size)  ##将文件切割为50s一块

 

for i, chunk in enumerate(chunks):

    ##枚举,i是索引,chunk是切割好的文件

    chunk_name = "bulues{0}.wav".format(i)

    #print(chunk_name)

    ##将切割后的短语音放入项目文件夹

    audioPath="/....../PycharmProjects/untitled/venv/短语音接口识别长语音/audioFile/"+chunk_name

    ##保存文件

    chunk.export(audioPath, format="wav")

2.引入短语音识别SDK,SDK可在官网下载:https://ai.baidu.com/sdk#asr

对切割后的语音文件调用短语音识别接口进行识别;

这部分放在for循环外面即可:

""" 你的 APPID AK SK """

APP_ID = 'xxx'

API_KEY = 'xxxxxxxx'

SECRET_KEY = 'xxxxxxxxxxxxxxxxx'

##使用短语音识别sdk 创建client

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

进行识别:

#对分割后的文件识别

    ## 读取文件

    def get_file_content(filePath):

        with open(filePath, 'rb') as fp:

            return fp.read()

 

    ## 识别本地文件

    #print(audioPath)

    res = client.asr(get_file_content(audioPath), 'wav', 16000, {'dev_pid': 1537})

    print(res)

    res1=res['result']

3.将识别后的结果进行提取,然后写入本地txt文件;

开头已在项目文件夹下创建文本文件:

##创建txt文件存放识别结果

fo = open("/xxxxxxxxx/PycharmProjects/untitled/venv/短语音接口识别长语音/audioFile/result.txt", mode='x')

写入文件:

res1=res['result']

##提取识别结果,写入到本地文件中并拼接起来

print(res1)

fo.write(str(res1))

四、实现的效果

1.运行代码后控制台的结果:

2.生成的分割文件:

3.保存的识别结果的本地文本文件:

五、总结

使用pycharm ce进行开发,调用了短语音识别接口;

用到了python的pydub库,参考的文章:https://blog.csdn.net/qq_41661056/article/details/102930764

项目代码:

链接:https://ecloud.baidu.com?t=4c66dc76f04ecbd5f185aa2c7a1c20ed 

时间紧张,写的比较简单,还有很多地方可以优化;

比如分割音频时可以判断下每60s之前间隔较长的地方进行分割,防止整句分割识别导致句义识别不准确;

写入文件时每次文件名自加创建新文件,以便区分;

欢迎大家点赞以及给出建议 ~~~

 

收藏
点赞
0
个赞
TOP
切换版块