語音辨識是一種由 AI 驅動的裝置語音轉文字技術,能即時或從預錄檔案將語音轉錄成文字。 透過完全在裝置上運行,它提供低延遲的轉錄,無需網路連線或將音訊資料傳送至雲端。 如同所有 AI 模型,轉錄輸出不一定準確,且應在關鍵應用情境下進行驗證。
在您的應用程式中加入語音辨識功能,可實現以下情境:
- 會議或媒體播放時的即時字幕與字幕
- 語音驅動的筆記與口述
- 依賴語音輸入的使用者的無障礙功能
- 錄音音訊檔案的轉錄,如訪談或講座
- 桌面應用程式中的語音指令與免持互動
API 支援兩種運作模式:
- 批次辨識:一次完成整個音訊檔案的轉錄,適合預先錄製的內容。
- 串流辨識:從麥克風或音訊串流持續進行即時轉錄,並在辨識出語句時提供結果。
你可以使用 SpeechRecognitionModel 從音訊檔案或裝置上的即時音訊串流中轉錄語音。
關於 API 細節,請參閱 AI 語音功能的 API 參考文獻。
如需 內容仲裁詳細數據,請參閱 使用衍生式 AI API 的內容安全性。
Important
套件資訊清單需求:若要使用 Windows AI 影像處理 API,您的應用程式必須封裝為 MSIX 套件,並在您的systemAIModels中聲明 Package.appxmanifest 功能。 此外,請確保您的清單的 MaxVersionTested 屬性設定為最新的 Windows 版本(例如, 10.0.26226.0 或更高版本),以正確支援 Windows AI 功能。 使用較舊的值可能會導致載入模型時「未由應用程式宣告」錯誤。
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.26226.0" />
</Dependencies>
先決條件
- Windows 版本: Windows 11,版本 24H2(版本 26100)或更新版本
- WinAppSDK 版本: 版本 1.7.1 或更新版本
- 硬體: 具備 NPU 的 Copilot+ PC,或任何符合 建議 CPU 規格 的 Windows 電腦
支援的硬體
語音辨識可在以下硬體上運行:
| Hardware | Status | 詳細資料 |
|---|---|---|
| NPU(Copilot+ PC) | ✅ 可取得 | 最佳效能。 模型是預先安裝好的。 請參考 Copilot+ PCs 開發者指南。 |
| CPU | ✅ 可選(可拆卸) | 型號並非預裝——請參閱 模型可用性與下載。 在符合推薦 CPU 規格的裝置中表現最佳。 |
| GPU | ❌ 未支援 | GPU 上沒有語音辨識功能。 |
Note
硬體選擇是自動的。 在帶有 NPU 的 Copilot+ PC 上,語音辨識總是在 NPU 上執行。 在非 Copilot+ 裝置上,該系統會自動在 CPU 上運行——開發者或終端用戶無需選擇 Copilot+ 裝置上的 CPU。 這與其他Windows AI API 採用的模式相符;跨 API 視圖請參見 Supported hardware。
推薦的 CPU 規格
語音辨識可在其他 Windows AI API 運行的任何 CPU 上運行,但即時轉錄品質與延遲會隨主機 CPU 調整。
為了獲得良好的 CPU 體驗,請鎖定符合 以下所有 推薦規格的裝置:
- 四個或以上的實體核心
- 3 GHz 或更高基準時脈
- 32 MB 或以上的 L3 快取
這些只是建議,而非硬性最低標準——API 仍會嘗試在低規格裝置上進行轉錄。 鎖定廣泛 CPU 範圍的應用程式可以使用與 VSR 所示相同的執行階段 CPU 檢查方式,請參閱 VSR 建議的 CPU 規格,以查看使用 System.Management(WMI)的 C# 範例。 利用結果來限制使用者體驗的選擇,例如在邊緣硬體上預設批次辨識,或隱藏直播入口。
型號可用性與下載
在 Copilot+ 電腦上,語音辨識模型已預先安裝於 NPU 上。 在僅支援 CPU 的裝置上,該模型 並非 預載——當你的應用程式第一次呼叫 EnsureReadyAsync 時,會即時下載。 下載會透過 Windows Update 在背景執行。 終端使用者也可以在之後移除該型號以回收磁碟空間。
此行為與其他可選 Windows AI 模型的生命週期相符——您的應用程式必須明確處理「尚未安裝」的情況,而非假設該模型存在。
推薦使用者體驗模式
由於語音辨識模型是在純 CPU 裝置上按需下載,致電前EnsureReadyAsync請顯示確認對話框,讓使用者同意背景下載。 一個典型的模式:
呼叫 GetReadyState,並根據傳回的 AIFeatureReadyState 進行分支處理:
-
Ready— 模型安裝完成;繼續。 -
NotReady或者EnsureNeeded— 顯示你的同意對話框(見下文),只有在用戶同意時才撥打EnsureReadyAsync電話。 -
NotSupportedOnCurrentSystem— 裝置不符合 支援硬體的要求。 提供備援體驗(例如 Speech Recognition via Windows SDK 或雲端式服務),並在適當時顯示硬體需求資訊,讓使用者能做出明智的升級決定。
-
在你的同意對話框中,請說明:
- 可選的語音辨識模型將被下載。
- 下載是在背景透過 Windows Update 進行的。
- 使用者可在 Settings>Windows Update 監控下載進度。
- 使用者若不再需要,可以在設定>>系統 AI 元件中移除該模型。
Tip
在面向使用者的字串(對話文字、狀態訊息)中,將模型稱為「語音辨識模型」或「可選 AI 模型」,而非底層模型名稱。 大多數終端使用者不熟悉品牌名稱,而通用名稱能更清楚地傳達目的。
在
EnsureReadyAsync進行期間,請在您的應用程式中顯示進度指示器。 請參考 Get Start with Windows AI APIS 來了解載入介面的模式。
模型安裝後
模型會一直留在裝置上,直到使用者移除為止。 使用者可在設定>>系統 AI 組件中管理已安裝的模型——包括語音辨識模型。 如果使用者之後移除該模型,您的應用程式下一次呼叫 GetReadyState 時會傳回 NotReady 或 EnsureNeeded,並且應重新執行同意與下載流程。
從音訊檔案進行批次辨識
使用批次辨識技術來轉錄完整的音訊檔案。 此方法非常適合預錄音訊內容。
- 呼叫 GetReadyState 並等待 EnsureReadyAsync 成功完成,以確認語音識別模型是否準備好。
- 模型準備好後,呼叫 TryCreateAsync 來實例化一個語音識別模型物件。
- 用 SpeechRecognitionModel 建立一個 BatchRecognition 實例。
- 打給 RecognizeFromFile ,提供音訊檔案的路徑以便轉錄。
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Speech;
if (SpeechRecognitionModel.GetReadyState() != AIFeatureReadyState.Ready)
{
await SpeechRecognitionModel.EnsureReadyAsync();
}
var speechModelResult = await SpeechRecognitionModel.TryCreateAsync();
if (speechModelResult.SpeechModel == null)
{
throw new InvalidOperationException(
$"Failed to create SpeechRecognitionModel: {speechModelResult.ExtendedError}");
}
var speechModel = speechModelResult.SpeechModel;
var batchRecognition = new BatchRecognition(speechModel);
string transcription = await batchRecognition.RecognizeFromFile("path/to/audio.wav");
Console.WriteLine($"Transcription: {transcription}");
即時音訊來源的串流辨識
利用串流辨識技術即時轉錄麥克風或其他音訊輸入裝置的音訊。 此方法會在辨識出完整片語時提供最終結果。
- 呼叫 GetReadyState 並等待 EnsureReadyAsync 成功完成,以確認語音識別模型是否準備好。
- 模型準備好後,呼叫 TryCreateAsync 來實例化一個語音識別模型物件。
- 使用 FromAudioDevice 建立一個 AudioConfiguration,並以麥克風裝置名稱為名。
- 請用 AudioConfiguration 和 SpeechRecognitionModel 建立一個 StreamingRecognition 實例。
- 訂閱 認可 活動以接收轉錄結果。
- 請呼叫 StartContinuousRecognitionAsync 開始轉錄。
- 完成後呼叫 StopContinuousRecognition 。
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Speech;
if (SpeechRecognitionModel.GetReadyState() != AIFeatureReadyState.Ready)
{
await SpeechRecognitionModel.EnsureReadyAsync();
}
var speechModelResult = await SpeechRecognitionModel.TryCreateAsync();
if (speechModelResult.SpeechModel == null)
{
throw new InvalidOperationException(
$"Failed to create SpeechRecognitionModel: {speechModelResult.ExtendedError}");
}
var speechModel = speechModelResult.SpeechModel;
var audioConfig = AudioConfiguration.FromAudioDevice(microphoneDeviceName);
var streamingRecognition = new StreamingRecognition(audioConfig, speechModel);
// Subscribe to receive transcription results as phrases are recognized
streamingRecognition.Recognized += (sender, args) =>
{
Console.WriteLine($"Recognized: {args.Text}");
};
// Start real-time recognition
await streamingRecognition.StartContinuousRecognitionAsync();
// ... recognition is active, audio is being transcribed in real-time ...
// Stop recognition when done
streamingRecognition.StopContinuousRecognition();
另請參閱
- Whisper 透過 Foundry Local (Windows 10+,新型號, 效能不一,並非所有裝置都有)
- 透過 Windows SDK 進行語音辨識 (Windows 10+,舊型號,但所有裝置皆可用)
- Windows AI API 範例
第三方車型公告與資訊
此 API 使用來自 OpenAI Whisper 模型的元件,該模型以以下授權條款提供:
麻省理工學院許可證
版權所有 (c) 2022 OpenAI
特此授權任何人取得本軟體及相關文件檔案 (「軟體」) ,無限制地使用本軟體,包括但不限於使用、複製、修改、合併、出版、分發、再授權及/或銷售軟體副本的權利,並允許軟體提供者使用此權利, 但須符合以下條件:
上述著作權聲明及此權限聲明應包含在「軟體」之所有複本或重要部分中。
本軟體按現狀提供,不提供任何種類之明示或默示擔保,包括但不限於有關適售性、特定目的之適用性及未侵權之擔保。 在任何情況下,無論是因合約行為、侵權行為或其他情形,對於因本軟體、本軟體之使用或與本軟體有關之其他交易而產生、源自或與之相關的任何請求、損害或其他責任,作者或著作權人概不負責。