Blazor.SpeechRecognition.WebAssembly 2.0.5

There is a newer version of this package available.
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                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Blazor.SpeechRecognition.WebAssembly" Version="2.0.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Blazor.SpeechRecognition.WebAssembly --version 2.0.5                
#r "nuget: Blazor.SpeechRecognition.WebAssembly, 2.0.5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
9.0.0 50 11/22/2024
8.0.0 21,715 11/17/2023
8.0.0-rc.2.23480.2 2,278 10/13/2023
7.0.3 7,206 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,368 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