Public Access
30 lines
1.1 KiB
C#
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}'.")
|
|
};
|
|
}
|
|
}
|