SpeechToText API 可讓您將語音轉換成文字。

所需的 SpeechToText下列先決條件:
將權限新增至 AndroidManifest.xml:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
語法
C#
SpeechToText可以在 C# 中使用,如下所示:
async Task Listen(CancellationToken cancellationToken)
{
var isGranted = await speechToText.RequestPermissions(cancellationToken);
if (!isGranted)
{
await Toast.Make("Permission not granted").Show(CancellationToken.None);
return;
}
var recognitionResult = await speechToText.ListenAsync(
CultureInfo.GetCultureInfo(Language),
new Progress<string>(partialText =>
{
RecognitionText += partialText + " ";
}), cancellationToken);
if (recognitionResult.IsSuccessful)
{
RecognitionText = recognitionResult.Text;
}
else
{
await Toast.Make(recognitionResult.Exception?.Message ?? "Unable to recognize speech").Show(CancellationToken.None);
}
}
或使用事件:
async Task StartListening(CancellationToken cancellationToken)
{
var isGranted = await speechToText.RequestPermissions(cancellationToken);
if (!isGranted)
{
await Toast.Make("Permission not granted").Show(CancellationToken.None);
return;
}
speechToText.RecognitionResultUpdated += OnRecognitionTextUpdated;
speechToText.RecognitionResultCompleted += OnRecognitionTextCompleted;
await speechToText.StartListenAsync(CultureInfo.CurrentCulture, CancellationToken.None);
}
async Task StopListening(CancellationToken cancellationToken)
{
await speechToText.StopListenAsync(CancellationToken.None);
speechToText.RecognitionResultUpdated -= OnRecognitionTextUpdated;
speechToText.RecognitionResultCompleted -= OnRecognitionTextCompleted;
}
void OnRecognitionTextUpdated(object? sender, SpeechToTextRecognitionResultUpdatedEventArgs args)
{
RecognitionText += args.RecognitionResult;
}
void OnRecognitionTextCompleted(object? sender, SpeechToTextRecognitionResultCompletedEventArgs args)
{
RecognitionText = args.RecognitionResult;
}
方法
| 方法 | 描述 |
|---|---|
| RequestPermissions | 要求許可權。 |
| ListenAsync | 啟動語音辨識。 |
| StartListenAsync | 啟動SpeechToText服務。 (即時語音辨識結果會透過 RecognitionResultUpdated 和 RecognitionResultCompleted 呈現) |
| StopListenAsync | 停止SpeechToText服務。 (語音辨識結果將通過 RecognitionResultCompleted 呈現) |
SpeechToTextResult
從 ListenAsync 方法傳回的結果。 這可用來驗證辨識是否成功,也存取在語音辨識期間可能已擷取的任何例外狀況。
屬性
| 屬性 | 類型 | 描述 |
|---|---|---|
| Text | string |
已辨識的文字。 |
| 例外狀況 | Exception |
Exception如果語音辨識作業失敗,則取得 。 |
| IsSuccessful | bool |
取得值,判斷作業是否成功。 |
| CurrentState | SpeechToTextState |
取得目前的接聽狀態。 |
事件
| EventName | EventArgs | 描述 |
|---|---|---|
| RecognitionResultUpdated | SpeechToTextRecognitionResultUpdatedEventArgs |
當 SpeechToText 有即時更新時觸發。 |
| RecognitionResultCompleted | SpeechToTextRecognitionResultCompletedEventArgs |
SpeechToText 完成時觸發。 |
| StateChanged | SpeechToTextStateChangedEventArgs |
變更時 CurrentState 觸發程式。 |
方法
| 方法 | 描述 |
|---|---|
| EnsureSuccess | 驗證語音轉換文字作業是否成功。 |
警告
EnsureSuccess 如果辨識作業失敗,將會擲回 Exception 。
相依性註冊
如果您想要插入服務,您必須先註冊它。
使用下一個變更進行更新 MauiProgram.cs :
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkit();
builder.Services.AddSingleton<ISpeechToText>(SpeechToText.Default);
return builder.Build();
}
}
現在您可以插入服務,如下所示:
public partial class MainPage : ContentPage
{
private readonly ISpeechToText speechToText;
public MainPage(ISpeechToText speechToText)
{
InitializeComponent();
this.speechToText = speechToText;
}
public async void Listen(object sender, EventArgs args)
{
var isGranted = await speechToText.RequestPermissions(cancellationToken);
if (!isGranted)
{
await Toast.Make("Permission not granted").Show(CancellationToken.None);
return;
}
var recognitionResult = await speechToText.ListenAsync(
CultureInfo.GetCultureInfo("uk-ua"),
new Progress<string>(), cancellationToken);
recognitionResult.EnsureSuccess();
await Toast.Make($"RecognizedText: {recognitionResult.Text}").Show(cancellationToken);
}
}
範例
您可以在 .NET MAUI Community Toolkit 範例應用程式中找到作用中的範例SpeechToText。
API
您可以在 .NET MAUI Community Toolkit GitHub 存放庫上找到 的SpeechToText原始程式碼。