用 Python 畅玩 Line bot - 07:Audio message

这次想要介绍的部分是 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设定

>>:  【Day26】快速乘法器的实作(Booth演算法)

[Day-01] - Learn Spring Framework In One Month. ​

本文章「Learn Spring Framework In One Month」目的在提供读者可快速...

# JS杂食-06--小实作-1: Star Calculator

参考资料1:MDN — the Mozilla Developer Network 参考资料2:0...

Day30-30天的心得与作者的心声

30天来的心得: 终於写到第30天了,其实也不是真的30天啦~ 我大概花了14天左右就把全部的文章都...

企划实现(6)

甚麽是第三方支付? 第三方支付是指电子商务企业或是具实力及信用保障的独立机构,与银行之间建立一个中立...