iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
自我挑戰組

鐵人挑戰系列 第 2

Day2- 語音轉文字

  • 分享至 

  • xImage
  •  

Day2

今天語音轉文字,寫了第一個程式,首先先載入pyttsx3模組
https://pythonprogramminglanguage.com/text-to-speech/

Import the Gtts module for text

to speech conversion

from gtts import gTTS

import Os module to start the audio file

import os

#此句為輸入的文字
mytext = 'Convert this Text to Speech in Python'

語言設定使用英文,若是要使用中文可以使用zh-tw

language = 'en'
myobj = gTTS(text=mytext, lang=language, slow=False)
#儲存為output的mp3檔案
myobj.save("output.mp3")

播放存好的mp3檔

os.system("start output.mp3")
而後我又嘗試了使用中文
from gtts import gTTS

import Os module to start the audio file

import os
mytext = '你好嗎?早安 喔'

Language we want to use

language = 'zh-tw'
myobj = gTTS(text=mytext, lang=language, slow=False)
myobj.save("output.mp3")

Play the converted file

os.system("start output.mp3")
可以輸入文字輸出語音,可是我得反過來使用語音輸出文字,於是我使用了speech_recognition來辨別說出的文字,程式碼為此:
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
audio = r.listen(source)
r.recognize_google(audio, language='zh-TW')
print(r)
而成果卻不太理想,輸出的結果為:
<speech_recognition.Recognizer object at 0x000001B7E55C9820>
很明顯的輸出為亂碼,不是人能辨識出來的,所以我用了下一個程式來解決問題,在下列程式中,text是辨識出的文字,language = "zh-TW"為台灣使用的語言,而我將辨識出的文字存為json檔案,將json傳給處理後端的RASA處理,將json變為RASA輸入的文字,以此來回覆輸出。

#import library
import speech_recognition as sr
import json

Initialize recognizer class (for recognizing the speech)

r = sr.Recognizer()

Reading Audio file as source

listening the audio file and store in audio_text variable

with sr.Microphone() as source:
audio_text = r.listen(source)

recoginize_() method will throw a request error if the API is unreachable, hence using exception handling

try:

using google speech recognition

text = r.recognize_google(audio_text)
print('Converting audio transcripts into text …')
print(text)
text = r.recognize_google(audio_text, language = "zh-TW")
print('Text: '+r.recognize_google(audio_text, language = "zh-TW"))
myDict = {
"input_value": text
}
with open("output.json", "w", encoding="utf8") as f:
json.dump(myDict, f, ensure_ascii=False)
#print(json.dumps(myDict))
except:
print('Sorry.. run again…')
這段程式寫的則是輸出文字轉為json檔案,若是沒偵測到則顯示sorry..run again…


上一篇
Day1- 文字轉語音
下一篇
Day3- html視訊鏡頭
系列文
鐵人挑戰28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言