SpeechToText
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
メソッドから返される結果。 これは、認識が成功したかどうかを確認したり、音声認識中に発生した可能性のある例外にアクセスしたりするために使用できます。
Properties
プロパティ | タイプ | 説明 |
---|---|---|
テキスト | string |
認識されたテキスト。 |
例外 | Exception |
音声認識操作に失敗した場合に Exception を取得します。 |
IsSuccessful | bool |
操作が成功したかどうかを判断する値を取得します。 |
CurrentState | SpeechToTextState |
現在のリッスン状態を取得します。 |
Events
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);
}
}
例
SpeechToText
の動作の例は、「.NET MAUI Community Toolkit サンプル アプリケーション」で確認できます。
API
SpeechToText
のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET MAUI Community Toolkit