Files
meeting-assistant/MeetingAssistant/Transcription/ConfiguredSpeechRecognitionPipelineFactory.cs
T
2026-05-20 02:06:16 +02:00

30 lines
1.1 KiB
C#

using Microsoft.Extensions.Options;
namespace MeetingAssistant.Transcription;
public sealed class ConfiguredSpeechRecognitionPipelineFactory : ISpeechRecognitionPipelineFactory
{
private readonly IServiceProvider services;
private readonly MeetingAssistantOptions options;
public ConfiguredSpeechRecognitionPipelineFactory(
IServiceProvider services,
IOptions<MeetingAssistantOptions> options)
{
this.services = services;
this.options = options.Value;
}
public ISpeechRecognitionPipeline Create()
{
return options.Recording.TranscriptionProvider switch
{
"funasr" => ActivatorUtilities.CreateInstance<FunAsrSpeechRecognitionPipeline>(services),
"whisper-local" => ActivatorUtilities.CreateInstance<WhisperLocalSpeechRecognitionPipeline>(services),
"azure-speech" => ActivatorUtilities.CreateInstance<AzureSpeechRecognitionPipeline>(services),
_ => throw new InvalidOperationException(
$"Unsupported speech recognition pipeline '{options.Recording.TranscriptionProvider}'.")
};
}
}