这次想要介绍的部分是 Audio message,它跟 Image message 一样可以透过line_bot_api.get_message_content
去取得它的对应资讯。而 Line 的音档寄收会是个aac档,若要对该音档去做其他处理的时候就需要注意。
存音档的写法跟图片一样,只是将副档名的部分做更换
@handler.add(MessageEvent)
def handle_message(event):
if event.message.type == 'audio':
UserSendAudio = line_bot_api.get_message_content(event.message.id)
path= './audio/mp4/'+ UserId + '.aac'
with open(path, 'wb') as fd:
for chunk in UserSendAudio.iter_content():
fd.write(chunk)
那现在我们把音档存好之後,可以对它进行怎样的操作呢?这边是尝试将音档转换成文字再回传给使用者。
pip install
pydub
SpeechRecognition
pydub 是 Python 中用来处理音讯档案的套件,我们这次会使用到的是 AudioSegment,式其中可以用来变更档案格式、音量大小、撷取音档等功能。而SpeechRecognition则是可以进行将音档转文字的功能。
SpeechRecognition 有个特点是它转文字时所使用的音档需要是 wav 格式,因此会需要使用到 AudioSegment 来进行转档,而它辨认语音的语言依据是依照开头的语言,例如说,该段音档是前面中文,後面日文,它会当作是一段全中文的音档去做辨识,并不会把它切成两部分分别辨识。
下面为实际的范例:
from pydub import AudioSegment
import speech_recognition as sr
def trans_wav_to_text(filepath):
r = sr.Recognizer()#预设辨识英文
with sr.WavFile(filepath) as source:#读取wav档
audio = r.record(source)
try:
print("Transcription: " + r.recognize_google(audio,language="zh-TW")) #使用Google的服务
return r.recognize_google(audio,language="zh-TW") #默认辨识的语言
except LookupError:
return "Could not understand audio"
@handler.add(MessageEvent)
def handle_message(event):
if event.message.type == 'audio':
# 解读并储存音档
UserSendAudio = line_bot_api.get_message_content(event.message.id)
path= './audio/'+ UserId + '.aac'
with open(path, 'wb') as fd:
for chunk in UserSendAudio.iter_content():
fd.write(chunk)
trans_aac_to_wav(path, UserId)
audio_message = trans_wav_to_text('./audio/wav/'+ UserId + '.wav')
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=audio_message))
。
<<: Unity与Photon的新手相遇旅途 | Day26-Photon同步元件介绍、GameManager设定
本文章「Learn Spring Framework In One Month」目的在提供读者可快速...
参考资料1:MDN — the Mozilla Developer Network 参考资料2:0...
30天来的心得: 终於写到第30天了,其实也不是真的30天啦~ 我大概花了14天左右就把全部的文章都...
https://github.com/oscarsun72/TextForCtext.git Tex...
甚麽是第三方支付? 第三方支付是指电子商务企业或是具实力及信用保障的独立机构,与银行之间建立一个中立...