Blazor.SpeechRecognition.WebAssembly
2.0.5
See the version list below for details.
dotnet add package Blazor.SpeechRecognition.WebAssembly --version 2.0.5
NuGet\Install-Package Blazor.SpeechRecognition.WebAssembly -Version 2.0.5
<PackageReference Include="Blazor.SpeechRecognition.WebAssembly" Version="2.0.5" />
paket add Blazor.SpeechRecognition.WebAssembly --version 2.0.5
#r "nuget: Blazor.SpeechRecognition.WebAssembly, 2.0.5"
// Install Blazor.SpeechRecognition.WebAssembly as a Cake Addin #addin nuget:?package=Blazor.SpeechRecognition.WebAssembly&version=2.0.5 // Install Blazor.SpeechRecognition.WebAssembly as a Cake Tool #tool nuget:?package=Blazor.SpeechRecognition.WebAssembly&version=2.0.5
Blazorators: The Source Generated speechRecognition
JavaScript Interop library for Blazor WebAssembly
The Blazor.SpeechRecognition.WebAssembly
package consumes the Blazor.SourceGenerators
package. It exposes a source generated ISpeechRecognition
interface specific to Blazor WebAssembly and the speechRecognition
Web API.
Get started
After the NuGet package is added as a reference, call the AddSpeechRecognitionServices
method to register the ISpeechRecognitionService
type.
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");
builder.Services.AddScoped(
sp => new HttpClient
{
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
});
builder.Services.AddSpeechRecognitionServices();
await builder.Build().RunAsync();
Anywhere needed within your Razor component, or Blazor client code — either @inject
or [Inject]
the ISpeechRecognitionService
type. The interface takes the following shape:
namespace Microsoft.JSInterop;
/// <summary>
/// A service the exposes various JavaScript interop capabilities specific to the
/// <c>speechRecognition</c> APIs. See <a href="https://developer.mozilla.org/docs/Web/API/SpeechRecognition"></a>
/// </summary>
public interface ISpeechRecognitionService : IAsyncDisposable
{
/// <summary>
/// Call once, before using in the consuming components
/// <c>OnAfterRenderAsync(bool firstRender)</c> override, when firstRender is <c>true</c>.
/// </summary>
Task InitializeModuleAsync();
/// <summary>
/// Cancels the active speech recognition session.
/// </summary>
/// <param name="isAborted">
/// Is aborted controls which API to call,
/// either <c>speechRecognition.stop</c> or <c>speechRecognition.abort</c>.
/// </param>
void CancelSpeechRecognition(bool isAborted);
/// <summary>
/// Starts the speech recognition process. Callbacks will be invoked on
/// the <paramref name="component"/> for the given method names.
/// </summary>
/// <typeparam name="TComponent">The consuming component (or object).</typeparam>
/// <param name="component">The calling Razor (or Blazor) component.</param>
/// <param name="language">The BCP47 language tag.</param>
/// <param name="onResultCallbackMethodName">
/// Expects the name of a <c>"JSInvokableAttribute"</c> C# method with the
/// following <see cref="Action{String, SpeechRecognitionResult}"/> signature.
/// </param>
/// <param name="onErrorCallbackMethodName">
/// Expects the name of a <c>"JSInvokableAttribute"</c> C# method with the
/// following <see cref="Action{String, SpeechRecognitionErrorEvent}"/> signature.
/// </param>
/// <param name="onStartCallbackMethodName">
/// Expects the name of a <c>"JSInvokableAttribute"</c> C# method with the
/// following <see cref="Action{String}"/>.
/// </param>
/// <param name="onEndCallbackMethodName">
/// Expects the name of a <c>"JSInvokableAttribute"</c> C# method with the
/// following <see cref="Action{String}"/> signature.
/// </param>
void RecognizeSpeech<TComponent>(
TComponent component,
string language,
string onResultCallbackMethodName,
string? onErrorCallbackMethodName = null,
string? onStartCallbackMethodName = null,
string? onEndCallbackMethodName = null) where TComponent : class;
/// <summary>
/// Starts the speech recognition process. Returns an <see cref="IDisposable"/>
/// that acts as the subscription. The various callbacks are invoked as they occur,
/// and will continue to fire until the subscription is disposed of.
/// </summary>
/// <param name="language">The BCP47 language tag.</param>
/// <param name="onRecognized">The callback to invoke when <c>onrecognized</c> fires.</param>
/// <param name="onError">The optional callback to invoke when <c>onerror</c> fires.</param>
/// <param name="onStarted">The optional callback to invoke when <c>onstarted</c> fires.</param>
/// <param name="onEnded">The optional callback to invoke when <c>onended</c> fires.</param>
/// <returns>
/// To unsubscribe from the speech recognition, call
/// <see cref="IDisposable.Dispose"/>.
/// </returns>
IDisposable RecognizeSpeech(
string language,
Action<string> onRecognized,
Action<SpeechRecognitionErrorEvent>? onError = null,
Action? onStarted = null,
Action? onEnded = null);
}
Initialize the module
In the consuming component, call ISpeechRecognitionService.InitializeModuleAsync
in the OnAfterRenderAsync
override:
public partial class ExampleConsumingComponent
{
[Inject]
public ISpeechRecognitionService SpeechRecognition { get; set; } = null!;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await SpeechRecognition.InitializeModuleAsync();
}
}
// Omitted for brevity...
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 6.0.0)
- Microsoft.Extensions.Primitives (>= 6.0.0)
- Microsoft.JSInterop (>= 6.0.0)
- System.Reactive.Linq (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on Blazor.SpeechRecognition.WebAssembly:
Repository | Stars |
---|---|
Azure-Samples/azure-search-openai-demo-csharp
A sample app for the Retrieval-Augmented Generation pattern running in Azure, using Azure Cognitive Search for retrieval and Azure OpenAI large language models to power ChatGPT-style and Q&A experiences.
|
|
IEvangelist/learning-blazor
The application for the "Learning Blazor: Build Single Page Apps with WebAssembly and C#" O'Reilly Media book by David Pine.
|
Version | Downloads | Last updated |
---|---|---|
8.0.0 | 21,516 | 11/17/2023 |
8.0.0-rc.2.23480.2 | 2,276 | 10/13/2023 |
7.0.3 | 7,205 | 2/15/2023 |
7.0.2 | 292 | 2/7/2023 |
7.0.1 | 310 | 1/24/2023 |
7.0.0 | 309 | 1/11/2023 |
2.0.11 | 453 | 10/10/2022 |
2.0.10 | 2,358 | 5/19/2022 |
2.0.9 | 488 | 4/18/2022 |
2.0.8 | 432 | 4/14/2022 |
2.0.7 | 442 | 4/14/2022 |
2.0.6 | 448 | 4/7/2022 |
2.0.5 | 843 | 4/5/2022 |