Skip to content

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see For full documentation content, see For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at

Semantic Kernel Integration for AssemblyAI

Transcribe audio in Semantic Kernel for C# .NET using the built-in integration with AssemblyAI.

For the complete documentation index, see llms.txt

Semantic Kernel is an SDK for multiple programming languages to develop applications with Large Language Models (LLMs). However, LLMs only operate on textual data and don't understand what is said in audio files. With the AssemblyAI integration for Semantic Kernel, you can use AssemblyAI's transcription models using the TranscribePlugin to transcribe your audio and video files.

Quickstart

Add the AssemblyAI.SemanticKernel NuGet package to your project.

bash
dotnet add package AssemblyAI.SemanticKernel
powershell
Install-Package AssemblyAI.SemanticKernel

Next, register the TranscriptPlugin into your kernel:

csharp
using AssemblyAI.SemanticKernel;
using Microsoft.SemanticKernel;

// Build your kernel
var kernel = Kernel.CreateBuilder();

// Get AssemblyAI API key from env variables, or much better, from .NET configuration
string apiKey = Environment.GetEnvironmentVariable("ASSEMBLYAI_API_KEY")
  ?? throw new Exception("ASSEMBLYAI_API_KEY env variable not configured.");

kernel.ImportPluginFromObject(
    new TranscriptPlugin(apiKey: apiKey)
);

Usage

Get the Transcribe function from the transcript plugin and invoke it with the context variables.

csharp
var result = await kernel.InvokeAsync(
    nameof(TranscriptPlugin),
    TranscriptPlugin.TranscribeFunctionName,
    new KernelArguments
    {
        ["INPUT"] = ""
    }
);
Console.WriteLine(result.GetValue<string>());

You can get the transcript using result.GetValue().

You can also upload local audio and video file. To do this:

  • Set the TranscriptPlugin.AllowFileSystemAccess property to true.
  • Configure the INPUT variable with a local file path.
csharp
kernel.ImportPluginFromObject(
    new TranscriptPlugin(apiKey: apiKey)
    {
        AllowFileSystemAccess = true
    }
);
var result = await kernel.InvokeAsync(
    nameof(TranscriptPlugin),
    TranscriptPlugin.TranscribeFunctionName,
    new KernelArguments
    {
        ["INPUT"] = ""
    }
);
Console.WriteLine(result.GetValue<string>());

You can also invoke the function from within a semantic function like this.

csharp
string prompt = """
                Here is a transcript:
                {{TranscriptPlugin.Transcribe ""}}
                ---
                Summarize the transcript.
                """;
var result = await kernel.InvokePromptAsync(prompt);
Console.WriteLine(result.GetValue<string>());

Additional resources

You can learn more about using Semantic Kernel with AssemblyAI in these resources:

  • Ask .NET Rocks! questions with Semantic Kernel, GPT, and Chroma DB
  • AssemblyAI integration for Semantic Kernel GitHub repository