@
准备工作
- 安装python3环境
- 申请一个可用的语音转换API,此篇以Microsoft Azure Speech为例
在Microsoft Azure 市场中搜索speech关键字找到语音服务。并创建好服务实例
![[Python]语音识别媒体中的音频到文本 [Python]语音识别媒体中的音频到文本](https://img-blog.csdnimg.cn/25158d8c751c482193f5222808d189a1.png)
在资源中找到创建的服务并查看
![[Python]语音识别媒体中的音频到文本](https://img-blog.csdnimg.cn/c97c192f8af644f88477bf776f634a31.png)
在此处点击显示密钥,我们要记住key值和location值,作为语音识别库的请求参数
![[Python]语音识别媒体中的音频到文本](http://www.itfaba.com/wp-content/themes/kemi/images/loading.gif)
视频转音频
安装视频库moviepy
pip install moviepy
编写代码,将视频文件test.mp4中的音频提取到test2.wav
import moviepy.editor videoClip = moviepy.editor.VideoFileClip(r"{}".format("test.mp4")) videoClip.audio.write_audiofile(r"{}".format("test2.wav"))
识别音频到文本
安装语音识别库SpeechRecognition
pip install SpeechRecognition
编写代码,将视频文件test3.wav中的音频识别,并转换成文本写入test.txt
import speech_recognition audio2 = speech_recognition.AudioFile("{}".format("test3.wav")) recognizer = speech_recognition.Recognizer() with audio2 as source: audioData = recognizer.record(source) result = recognizer.recognize_azure(audioData,key="<your api key>",language="zh-CN",location="eastus") with open('test.txt', 'w') as file: if result.__len__()>0: file.write(result[0])
完整代码如下
import speech_recognition import moviepy.editor videoClip = moviepy.editor.VideoFileClip(r"{}".format("test.mp4")) videoClip.audio.write_audiofile(r"{}".format("test2.wav")) audio2 = speech_recognition.AudioFile("{}".format("test2.wav")) recognizer = speech_recognition.Recognizer() with audio2 as source: audioData = recognizer.record(source) result = recognizer.recognize_azure(audioData,key="<your api key>",language="zh-CN",location="eastus") with open('test.txt', 'w') as file: if result.__len__()>0: file.write(result[0])
音频直接转换文本
Azure提供了快捷转换语音到文本的工具 https://speech.microsoft.com/portal
点击实时语音转文本
![[Python]语音识别媒体中的音频到文本 [Python]语音识别媒体中的音频到文本](https://img-blog.csdnimg.cn/34025b7a6a2e4bc6bd3e6503df461bc3.png)
这里需要注意的是,需要上传的音频格式为16kHz 或 8kHz、16 位和单声道 PCM
![[Python]语音识别媒体中的音频到文本](https://img-blog.csdnimg.cn/2523e7322e3449ec9404008b4bbac446.png)
上传完成后将自动转换成文本
![[Python]语音识别媒体中的音频到文本](http://www.itfaba.com/wp-content/themes/kemi/images/loading.gif)
安装音频转换库pydub
pip install pydub
编写代码,将test.aac文件以16kHz 采样率和单声道 PCM 编码方式,保存至test1.wav
注意,如果使用ffmpeg编码的格式,需要下载ffmpeg相关库到脚本所在目录
http://www.ffmpeg.org/download.html#build-windows
from pydub import AudioSegment audio1 = AudioSegment.from_file("test.aac", "aac") # -ac 1 -ar 16000 audio1.export("test1.wav", format="wav",parameters=["-ac", "1", "-ar", "16000"])