[Python]使用SpeechRecognition進行語音辨識

更新 發佈閱讀 10 分鐘

本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。

  1. 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop
  2. 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​


raw-image

程式範例

import sys
import speech_recognition as sr
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QTextEdit, QVBoxLayout
from PyQt5.QtCore import Qt
import threading

class AudioRecorder(QWidget):
def __init__(self):
super().__init__()

self.initUI()
self.recording = False
self.recognizer = sr.Recognizer()
self.audio = None
self.thread = None

def initUI(self):
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Audio Recorder')

layout = QVBoxLayout()

self.start_button = QPushButton('Start Recording')
self.start_button.clicked.connect(self.toggle_recording)
layout.addWidget(self.start_button)

self.text_area = QTextEdit()
self.text_area.setReadOnly(True)
layout.addWidget(self.text_area)

self.setLayout(layout)

def toggle_recording(self):
if self.recording:
self.stop_recording()
else:
self.start_recording()

def start_recording(self):
self.recording = True
self.start_button.setText('Stop Recording')
self.text_area.setText("請開始說話:")
self.thread = threading.Thread(target=self.record_audio)
self.thread.start()

def stop_recording(self):
self.recording = False
self.start_button.setText('Start Recording')
if self.thread:
self.thread.join()
self.recognize_audio()

def record_audio(self):
microphone = sr.Microphone()

with microphone as source:
self.recognizer.adjust_for_ambient_noise(source)
self.audio = self.recognizer.listen(source)

def recognize_audio(self):
try:
text = self.recognizer.recognize_google(self.audio, language='zh-tw')
self.text_area.setText(text)
except sr.UnknownValueError:
self.text_area.setText("無法辨識音訊")
except sr.RequestError as e:
self.text_area.setText(f"無法連接到Google服務;{e}")

def closeEvent(self, event):
if self.recording:
self.stop_recording()
event.accept()

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = AudioRecorder()
ex.show()
sys.exit(app.exec_())

程式碼重點說明

定義 AudioRecorder 類別

class AudioRecorder(QWidget):
def __init__(self):
super().__init__()

self.initUI()
self.recording = False
self.recognizer = sr.Recognizer()
self.audio = None
self.thread = None
  • __init__ 方法:初始化類別。這裡設置了一些初始狀態,如錄音狀態、語音辨識器和音頻數據。

錄音和停止錄音的邏輯

    def toggle_recording(self):
if self.recording:
self.stop_recording()
else:
self.start_recording()

def start_recording(self):
self.recording = True
self.start_button.setText('Stop Recording')
self.text_area.setText("請開始說話:")
self.thread = threading.Thread(target=self.record_audio)
self.thread.start()

def stop_recording(self):
self.recording = False
self.start_button.setText('Start Recording')
if self.thread:
self.thread.join()
self.recognize_audio()
  • toggle_recording :根據當前錄音狀態切換開始或停止錄音。
  • start_recording :開始錄音,將按鈕文本設為 "Stop Recording",並啟動新執行緒來錄製音頻。
  • stop_recording :停止錄音,將按鈕文本設為 "Start Recording",並在執行緒結束後進行語音辨識。

錄製音頻和語音辨識

    def record_audio(self):
microphone = sr.Microphone()

with microphone as source:
self.recognizer.adjust_for_ambient_noise(source)
self.audio = self.recognizer.listen(source)

def recognize_audio(self):
try:
text = self.recognizer.recognize_google(self.audio, language='zh-tw')
self.text_area.setText(text)
except sr.UnknownValueError:
self.text_area.setText("無法辨識音訊")
except sr.RequestError as e:
self.text_area.setText(f"無法連接到Google服務;{e}")
  • record_audio :使用 speech_recognition 庫來錄製音頻。這裡使用了 Microphone 來捕捉音頻,並調整麥克風的背景噪音。
  • recognize_audio :使用 Google 語音辨識服務將錄製的音頻轉換為文字,並顯示在文本區域。如果辨識失敗,則顯示錯誤信息。

視窗關閉事件

    def closeEvent(self, event):
if self.recording:
self.stop_recording()
event.accept()
  • closeEvent 方法:在關閉窗口時,如果仍在錄音,則停止錄音,然後接受關閉事件。










留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
156會員
306內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2024/06/29
先前上一篇是使用NLT內置的電影評論數據集 movie_reviews,來訓練出情感分析模型,此篇文章介紹可以導入自己的訓練資料集來建立情感分析模組。 [Python][自然語言]NLTK 實現電影評論情感分析 所需套件 pip install pandas pip install sci
2024/06/29
先前上一篇是使用NLT內置的電影評論數據集 movie_reviews,來訓練出情感分析模型,此篇文章介紹可以導入自己的訓練資料集來建立情感分析模組。 [Python][自然語言]NLTK 實現電影評論情感分析 所需套件 pip install pandas pip install sci
2024/06/29
情感分析是一種自然語言處理技術,用於自動識別和分析文本中的情感傾向,通常是正向、負向或中性。 我們可以使用 NLTK 來實現一個基於單純貝斯分類器的情感分析模型。
2024/06/29
情感分析是一種自然語言處理技術,用於自動識別和分析文本中的情感傾向,通常是正向、負向或中性。 我們可以使用 NLTK 來實現一個基於單純貝斯分類器的情感分析模型。
2024/06/29
本文介紹了流行的Python套件NLTK(Natural Language Toolkit)的主要特點、功能和在中文和英文語料上的應用。從安裝到實際應用,深入介紹了分詞、停用詞去除、詞性標註、命名實體識別等NLP任務的具體實現和步驟,幫助讀者理解和應用NLTK。
Thumbnail
2024/06/29
本文介紹了流行的Python套件NLTK(Natural Language Toolkit)的主要特點、功能和在中文和英文語料上的應用。從安裝到實際應用,深入介紹了分詞、停用詞去除、詞性標註、命名實體識別等NLP任務的具體實現和步驟,幫助讀者理解和應用NLTK。
Thumbnail
看更多
你可能也想看
Thumbnail
我們前面幾篇已經講完TTS技術的一大半架構了,知道了如何將聲學特徵重建回音訊波形,也從中可以知道要是聲學特徵不完善,最終取得的結果也會不自然,剩下要探討該如何將文字轉換成聲學特徵,且能夠自然地表現停頓及細節變化,讓我們開始吧。
Thumbnail
我們前面幾篇已經講完TTS技術的一大半架構了,知道了如何將聲學特徵重建回音訊波形,也從中可以知道要是聲學特徵不完善,最終取得的結果也會不自然,剩下要探討該如何將文字轉換成聲學特徵,且能夠自然地表現停頓及細節變化,讓我們開始吧。
Thumbnail
還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。 語音辨識的熱門組件之
Thumbnail
還記得我們之前介紹過「【Google Colab Python系列】 初探Whisper: 來一段Youtube影片進行語音辨識吧!」這套語音辨識引擎, 那為什麼我們又要教這一套? 因為我們也可以將whisper的模型轉換成onnx的格式, 輕鬆移植到各種平台, 且效能更佳。 語音辨識的熱門組件之
Thumbnail
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
Thumbnail
本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。
Thumbnail
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
Thumbnail
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
Thumbnail
  我們在語音初探篇提到TTS的流程可以分成三個部分 :輸入前處理、預測音訊特徵、語音重建,其中輸入前處理的部分上兩篇已經處理完,在進入預測音訊特徵前,讓我們先來理解最後的語音重建部分。
Thumbnail
  我們在語音初探篇提到TTS的流程可以分成三個部分 :輸入前處理、預測音訊特徵、語音重建,其中輸入前處理的部分上兩篇已經處理完,在進入預測音訊特徵前,讓我們先來理解最後的語音重建部分。
Thumbnail
  在 AI 應用中,圖像、語音、文字三種可以說是主要應用,其中我一直以來都是專注於圖像上的研究,對於另兩種僅止於淺嚐,接下來就往音訊上研究看看,先從入門級的Text-To-Speech (TTL) 入場並一個個嘗試其他類型的應用,那麼,就讓我們開始吧。
Thumbnail
  在 AI 應用中,圖像、語音、文字三種可以說是主要應用,其中我一直以來都是專注於圖像上的研究,對於另兩種僅止於淺嚐,接下來就往音訊上研究看看,先從入門級的Text-To-Speech (TTL) 入場並一個個嘗試其他類型的應用,那麼,就讓我們開始吧。
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
免費文字轉語音(Free text to speech)免費的線上語音合成工具,使用微軟 AI 語音庫生成仿真人語音,支援 129 種語言,提供三百多種聲音,輸入文本即可線上聆聽和下載 MP3 檔案。
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News