語音辨識

已完成

小提示

有關更多詳細信息,請參閱 文本和圖像 選項卡!

語音辨識,通常稱為 語音轉文字(STT),是一種人工智慧能力,使應用程式和代理能夠回應語音輸入。 語音辨識會將口語轉換成資料,通常是文字。 語音轉文字軟體通常使用多種模型,包括:

  • 一種將音訊轉換成音素(特定聲音的表示)的 聲學 模型。
  • 一個將音素映射到單字的 語言 模型。

AI 語音識別的詞彙會被轉換成文字。 你可以將文字用於多種用途,例如提供隱藏字幕、建立通話逐字稿、自動化語音輸入等。

Azure 語音 - 語音轉文字

Azure Voice 包含語音 轉文字 API ,可用來處理麥克風或音訊檔案的語音輸入。

備註

API(應用程式介面)是一組規則與端點,允許一個軟體應用程式與另一個應用程式溝通並使用其功能或資料。

Microsoft Foundry 是一個 Microsoft 平台,協助開發者透過將模型、工具、資料與服務整合於一處,來建置、測試及部署 AI 應用程式與代理。

在 全新的 Microsoft Foundry 入口網站中,我們可以探索 Azure Speech 在 Foundry 遊樂場中的語音轉文字功能。 要進入遊樂場,先到 建置 頁面,再到 模型,再到 AI服務 標籤。在分頁中,你可以找到可供測試的 AI 服務,包括 Azure 語音 - 語音轉文字。

在遊樂場裡,你可以上傳音訊檔或錄下自己說話的過程。 Azure Speech 會轉錄所說的內容,讓你感受應用程式對音訊輸入的反應。

Foundry 遊樂場語音轉文字的截圖。

Foundry 入口網站的遊樂場是嘗試 Azure Speech 的絕佳場所,但要在應用程式中使用語音轉文字,我們需要寫一些程式碼。

使用 Azure 語音轉文字 SDK

Azure 語音轉文字 SDK 是一個用戶端函式庫,讓應用程式能將語音音訊轉換成書面文字。 語音轉文字 SDK 旨在讓語音辨識更容易加入應用程式。

備註

用戶端函式庫是一組現成的程式碼,開發者可以在應用程式中使用,方便地與服務或 API 溝通。

SDK 使您的應用程式能夠:

  • 從麥克風、音訊檔案或音訊串流擷取或傳送音訊
  • 請安全地將音訊傳送到 Azure Speech
  • 可近乎即時或處理完成後接收轉錄文字

SDK 處理網路、認證、音訊串流及回應解析,讓開發者能專注於應用程式邏輯。

開發應用程式

語音轉文字 SDK 通常用於應用程式的客戶端或服務層。 SDK 作為應用程式碼與 Azure Speech 服務之間的橋樑。

要使用 Azure Speech Python SDK,你需要安裝相容版本的 Python 和 Azure Speech Python SDK。

Python SDK 可透過以下方式安裝於 Visual Studio Code 終端機 中:

pip install azure-cognitiveservices-speech

備註

應用程式程式碼由 程式碼編輯器撰寫,例如 Visual Studio Code。 程式碼編輯器的 終端機 是編輯器內建的命令列視窗,你可以在不離開開發環境的情況下執行指令。

要使用 Azure Speech,你也需要建立一個 Foundry 資源。 Foundry 資源端點和金鑰用於程式碼中來驗證連線。

安裝 Python SDK 並建立 Foundry 資源後,你就可以建立並執行你的程式。 請參考以下 Python 程式碼。 當你執行它時:

  1. 你的應用程式初始化語音 SDK:提供端點與認證(金鑰或 Microsoft Entra ID)
  2. 音訊被擷取或載入:麥克風輸入或音訊檔案/串流
  3. 音訊會傳送到 Azure Speech:SDK 會安全地串流或上傳音訊
  4. 語音辨識運行於雲端:Azure 的語音模型分析音訊
  5. 回傳文字結果:您的應用程式會收到已識別的文字及可選的元資料
import azure.cognitiveservices.speech as speechsdk

# Set up the speech config using resource endpoint
endpoint_url = "ENDPOINT"
speech_key = "FOUNDRY_KEY"

speech_config = speechsdk.SpeechConfig(
    subscription=speech_key,
    endpoint=endpoint_url
)

# Create a recognizer with microphone input
audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True)
speech_recognizer = speechsdk.SpeechRecognizer(
    speech_config=speech_config, 
    audio_config=audio_config
)

# Event handlers
def recognized_handler(evt):
    print(f"Recognized: {evt.result.text}")

def recognizing_handler(evt):
    print(f"Recognizing: {evt.result.text}")

# Connect event handlers
speech_recognizer.recognized.connect(recognized_handler)
speech_recognizer.recognizing.connect(recognizing_handler)

# Start continuous recognition
speech_recognizer.start_continuous_recognition()
print("Say something...")

# Keep the program running
input("Press Enter to stop...")
speech_recognizer.stop_continuous_recognition()

客戶端應用程式範例

舉例來說,假設你想開發一款輕量級應用程式,能自動轉錄語音信箱訊息。 在程式碼編輯器中,我們有一個音訊檔案和一個包含應用程式程式碼的 Python 檔案。

Visual Studio Code 的截圖,開啟音訊檔。

假設你有一個包含語音信箱錄音的音訊檔案。 要轉錄訊息,首先要指定終端點、鍵以及你想轉錄的音訊來源。 接著使用 SpeechRecognizer 物件進行轉錄,然後再顯示結果。

Visual Studio Code 中語音轉文字的 Python 程式碼截圖。

執行程式碼後,你可以看到轉錄文字。

Visual Studio Code 在終端機開啟時的截圖,以及語音轉文字的結果。

音訊處理選項

你可以使用 Azure Speech 的語音轉文字 API,將音訊即時或批次轉錄成文字格式。 轉譯其音訊來源可以是來自麥克風或音訊檔案的即時音訊串流。

實時轉錄: 實時語音轉文本允許您將音頻流轉錄為文本。 您可將即時轉譯用於簡報、示範或任何其他有人演說的場景。

為了讓即時謄寫能夠正常運作,應用程式必須接聽從麥克風或其他音訊輸入來源 (例如音訊檔案) 傳入的音訊。 應用程式程式碼會將音訊串流至服務,這會傳回轉譯的文字。

批次謄寫:並非所有語音轉換文字案例都是即時的。 您可能有儲存在檔案共用、遠端伺服器,甚至是 Azure 儲存體上的音訊錄製內容。 您可使用共用存取簽章 (SAS) URI 來指向音訊檔案,並以非同步方式接收轉譯結果。

批次轉譯應該以非同步方式執行,因為批次作業是根據「最大工作量」來排程。 通常作業會在要求的幾分鐘內開始執行,但無法估計作業何時會變更為執行中狀態。

Azure 語音辨識是建立轉錄錄音或自動語音字幕解決方案的絕佳方式。 接著,學習如何將語音合成整合到應用程式中。