/
ISpeechToText.shared.cs
64 lines (55 loc) · 2.33 KB
/
ISpeechToText.shared.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System.Globalization;
namespace CommunityToolkit.Maui.Media;
/// <summary>
/// Allows the user to convert speech to text in real time.
/// </summary>
public interface ISpeechToText : IAsyncDisposable
{
/// <summary>
/// Triggers when SpeechToText has real time updates
/// </summary>
event EventHandler<SpeechToTextRecognitionResultUpdatedEventArgs> RecognitionResultUpdated;
/// <summary>
/// Triggers when SpeechToText has completed
/// </summary>
event EventHandler<SpeechToTextRecognitionResultCompletedEventArgs> RecognitionResultCompleted;
/// <summary>
/// Triggers when <see cref="CurrentState"/> has changed
/// </summary>
event EventHandler<SpeechToTextStateChangedEventArgs> StateChanged;
/// <summary>
/// Current listening state
/// </summary>
SpeechToTextState CurrentState { get; }
/// <summary>
/// Converts speech to text in real time.
/// </summary>
/// <param name="culture">Speak language</param>
/// <param name="recognitionResult">Intermediate recognition result.</param>
/// <param name="cancellationToken"><see cref="CancellationToken"/></param>
/// <returns>Final recognition result</returns>
Task<SpeechToTextResult> ListenAsync(CultureInfo culture, IProgress<string>? recognitionResult, CancellationToken cancellationToken = default);
/// <summary>
/// Starts the SpeechToText service
/// </summary>
/// <remarks>
/// Real time speech recognition results will be surfaced via <see cref="RecognitionResultUpdated"/> and <see cref="RecognitionResultCompleted"/>
/// </remarks>
/// <param name="culture">Speak language</param>
/// <param name="cancellationToken"><see cref="CancellationToken"/></param>
Task StartListenAsync(CultureInfo culture, CancellationToken cancellationToken = default);
/// <summary>
/// Stops the SpeechToText service
/// </summary>
/// <remarks>
/// Speech recognition results will be surfaced via <see cref="RecognitionResultCompleted"/>
/// </remarks>
/// <param name="cancellationToken"><see cref="CancellationToken"/></param>
Task StopListenAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Request permissions for speech to text.
/// </summary>
/// <param name="cancellationToken"><see cref="CancellationToken"/></param>
/// <returns>True if permissions granted</returns>
Task<bool> RequestPermissions(CancellationToken cancellationToken = default);
}