Example #1
0
 /// <summary>
 /// 关闭语音合成方法
 /// </summary>
 /// <param name="provider"></param>
 /// <param name="callback"></param>
 /// <returns></returns>
 public static async Task CloseAsync(this ISynthesizerProvider provider, Func <SynthesizerStatus, Task>?callback = null)
 {
     var option = new SynthesizerOption()
     {
         MethodName = "bb_baidu_close_synthesizer",
         Callback   = callback
     };
     await provider.InvokeAsync(option);
 }
Example #2
0
 /// <summary>
 /// 关闭语音合成方法
 /// </summary>
 /// <param name="service"></param>
 /// <param name="callback"></param>
 /// <returns></returns>
 public static async Task CloseAsync(this SynthesizerService service, Func <SynthesizerStatus, Task>?callback = null)
 {
     var option = new SynthesizerOption()
     {
         MethodName = "bb_baidu_close_synthesizer",
         Callback   = callback
     };
     await service.InvokeAsync(option);
 }
Example #3
0
 /// <summary>
 /// 语音合成方法
 /// </summary>
 /// <param name="provider"></param>
 /// <param name="text"></param>
 /// <param name="callback"></param>
 /// <returns></returns>
 public static async Task SynthesizerOnceAsync(this ISynthesizerProvider provider, string?text, Func <SynthesizerStatus, Task>?callback = null)
 {
     var option = new SynthesizerOption()
     {
         Text       = text,
         MethodName = "bb_baidu_speech_synthesizerOnce",
         Callback   = callback
     };
     await provider.InvokeAsync(option);
 }
 /// <summary>
 /// 语音合成方法
 /// </summary>
 /// <param name="service"></param>
 /// <param name="text"></param>
 /// <param name="callback"></param>
 /// <returns></returns>
 public static async Task SynthesizerOnceAsync(this SynthesizerService service, string?text, Func <SynthesizerStatus, Task> callback)
 {
     var option = new SynthesizerOption()
     {
         Text       = text,
         MethodName = "bb_azure_speech_synthesizerOnce",
         Callback   = callback
     };
     await service.InvokeAsync(option);
 }
Example #5
0
        public async Task InvokeAsync(SynthesizerOption option)
        {
            var method              = option.MethodName;
            var language            = option.SpeechSynthesisLanguage;
            var recognitionLanguage = option.SpeechSynthesisVoiceName;
            var text = option.Text;

            if (option.Callback != null)
            {
                await option.Callback(SynthesizerStatus.Finished);
            }
        }
    /// <summary>
    /// InvokeAsync 方法
    /// </summary>
    /// <param name="option"></param>
    /// <returns></returns>
    public async Task InvokeAsync(SynthesizerOption option)
    {
        Option = option;
        if (Module == null)
        {
            Module = await JSRuntime.InvokeAsync <IJSObjectReference>("import", "./_content/BootstrapBlazor.AzureSpeech/js/speech.js");
        }
        Interop ??= DotNetObjectReference.Create(this);

        if (Option.MethodName == "bb_azure_speech_synthesizerOnce" && !string.IsNullOrEmpty(Option.Text))
        {
            // 通过 SubscriptionKey 交换 Token
            var token = await ExchangeToken();

            await Module.InvokeVoidAsync(Option.MethodName, Interop, nameof(Callback), token, SpeechOption.Region, Option.SpeechSynthesisLanguage, Option.SpeechSynthesisVoiceName, Option.Text);
        }
        else if (Option.MethodName == "bb_azure_close_synthesizer")
        {
            // 停止语音
            await Module.InvokeVoidAsync(Option.MethodName, Interop, nameof(Callback));
        }
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="option"></param>
    /// <returns></returns>
    public async Task InvokeAsync(SynthesizerOption option)
    {
        Option = option;

        // 加载模块
        if (Module == null)
        {
            var moduleName = "./_content/BootstrapBlazor.BaiduSpeech/js/synthesizer.js";
            Logger.LogInformation($"load module {moduleName}");
            Module = await JSRuntime.InvokeAsync <IJSObjectReference>("import", moduleName);
        }
        Interop ??= DotNetObjectReference.Create(this);

        if (Option.MethodName == "bb_baidu_speech_synthesizerOnce" && !string.IsNullOrEmpty(Option.Text))
        {
            var result = Client.Synthesis(Option.Text);
            if (result.Success)
            {
                await Module.InvokeVoidAsync(Option.MethodName, Interop, nameof(Callback), result.Data);
            }
            else
            {
            }
            Logger.LogInformation($"bb_baidu_speech_synthesizerOnce {result.Success}");
            if (!result.Success)
            {
                Logger.LogError($"{result.ErrorCode}: {result.ErrorMsg}");
            }
        }
        else if (Option.MethodName == "bb_baidu_close_synthesizer")
        {
            // 停止语音
            await Module.InvokeVoidAsync(Option.MethodName, Interop, nameof(Callback));

            Logger.LogInformation("bb_baidu_close_synthesizer");
        }
    }
Example #8
0
 /// <summary>
 /// 语音合成回调方法
 /// </summary>
 /// <param name="option"></param>
 /// <returns></returns>
 public Task InvokeAsync(SynthesizerOption option) => Provider.InvokeAsync(option);