轉錄音訊的原因有很多,包括獲取歌詞、創建隱藏式字幕或保留會議的文字檔案。手動轉錄文字可能是一件很麻煩的事情,但幸運的是,在 Python 和 Google 語音辨識的幫助下,我們可以快速輕鬆地完成這件事。
Google 語音辨識是一項基於雲端的服務,可使用先進的機器學習模型將口語轉換為書面文字。它經常更新,支援多種語言和方言,可以即時處理音頻,並且您可以使用 API 將其整合到您的專案中。
在我們開始建立音訊轉錄腳本之前,您需要確保您的電腦上安裝了 Python 並且您知道如何執行腳本。如果您需要協助,我們在 GeekSided 提供了幾個初學者程式設計項目,可以幫助您入門。
在最後給您完整的程式碼之前,我們將查看程式碼的每個部分以解釋其工作原理。
要使用 Google 語音識別,您需要在命令提示字元中使用此命令在 Python 中安裝它,這也將安裝 pydub,一個用於操作音訊的庫:
pip install pydub 語音識別
導入庫
我們腳本的第一部分將導入我們需要的庫,其中包括我們剛剛安裝的兩個庫。作業系統庫是預先安裝的,將幫助我們將文字寫入檔案中,以便我們可以儲存它。
將語音辨識匯入為 sr
從 pydub 導入 AudioSegment
導入作業系統
載入和轉換音頻
接下來,我們將建立一個函數來載入檔案並將其轉換為 WAV 格式(如果檔案尚未採用該格式)。
def transcribe_audio(檔名):
嘗試:
# 載入音訊文件
音訊 = AudioSegment.from_file(file_name)
除了異常 e:
print(f"載入音訊檔案時發生錯誤:{e}")
返回
嘗試:
# 匯出為WAV格式
wav_file_name = file_name.replace(file_name.split('.')[-1], 'wav')
音訊.匯出(wav_檔名,格式=“wav”)
除了異常 e:
print(f"轉換為 WAV 時發生錯誤:{e}")
返回
轉錄音訊
現在,我們將添加分析音訊、轉錄單字並將其列印到文件中以進行安全儲存的程式碼。
嘗試:
# 使用speech_recognition來轉錄音頻
識別器 = sr.Recognizer()
以 sr.AudioFile(wav_file_name) 作為來源:
audio_data = 識別器.record(來源)
轉錄 = recognizer.recognize_google(audio_data)
print(f"轉錄:\n{轉錄}")
# 將轉錄儲存到文字文件
text_file_name = file_name.replace(file_name.split('.')[-1], 'txt')
將 open(text_file_name, 'w') 作為 text_file:
text_file.write(轉錄)
print(f"轉錄已儲存至 {text_file_name}")
除了 sr.UnknownValueError:
print(“抱歉,音訊不夠清晰,無法轉錄。”)
除了 sr.RequestError 為 e:
print(f"無法從 Google 語音辨識服務請求結果;{e}")
使用者輸入和執行
最後,我們添加程式碼,要求我們輸入要轉錄的音訊檔案的名稱,對於這個項目,該名稱需要與腳本位於同一目錄中。
如果 __name__ == "__main__":
file_name = input("輸入音訊檔案名稱(附副檔名):")
如果 os.path.exists(檔名):
轉錄音訊(檔案名稱)
別的:
print(f"檔案 {file_name} 不存在。")
input("按回車鍵退出...")
將語音辨識匯入為 sr
從 pydub 導入 AudioSegment
導入作業系統
def transcribe_audio(檔名):
嘗試:
# 載入音訊文件
音訊 = AudioSegment.from_file(file_name)
除了異常 e:
print(f"載入音訊檔案時發生錯誤:{e}")
返回
嘗試:
# 匯出為WAV格式
wav_file_name = file_name.replace(file_name.split('.')[-1], 'wav')
音訊.匯出(wav_檔名,格式=“wav”)
除了異常 e:
print(f"轉換為 WAV 時發生錯誤:{e}")
返回
嘗試:
# 使用speech_recognition來轉錄音頻
識別器 = sr.Recognizer()
以 sr.AudioFile(wav_file_name) 作為來源:
audio_data = 識別器.record(來源)
轉錄 = recognizer.recognize_google(audio_data)
print(f"轉錄:\n{轉錄}")
# 將轉錄儲存到文字文件
text_file_name = file_name.replace(file_name.split('.')[-1], 'txt')
將 open(text_file_name, 'w') 作為 text_file:
text_file.write(轉錄)
print(f"轉錄已儲存至 {text_file_name}")
除了 sr.UnknownValueError:
print(“抱歉,音訊不夠清晰,無法轉錄。”)
除了 sr.RequestError 為 e:
print(f"無法從 Google 語音辨識服務請求結果;{e}")
如果 __name__ == "__main__":
file_name = input("輸入音訊檔案名稱(附副檔名):")
如果 os.path.exists(檔名):
轉錄音訊(檔案名稱)
別的:
print(f"檔案 {file_name} 不存在。")
input("按 Enter 退出...")