Speech 语音识别与合成

通过麦克风语音采集转换为文字(STT),或者通过文字通过语音朗读出来(TTS)

本组件依赖于 BootstrapBlazor.AzureSpeech,使用本组件时需要引用其组件包

Demo https://www.blazor.zone/speechs

Nuget 包安装

使用 nuget.org 进行 BootstrapBlazor.AzureSpeech 组件的安装

.NET CLI

  1. dotnet add package BootstrapBlazor.AzureSpeech

PackageReference

  1. <PackageReference Include="BootstrapBlazor.AzureSpeech" />

注册服务

Program.cs

  1. // 增加语音服务
  2. builder.Services.AddBootstrapBlazorAzureSpeech();

使用服务

  1. // 语音识别服务
  2. [Inject]
  3. [NotNull]
  4. private RecognizerService? RecognizerService { get; set; }
  5. // 语音合成服务
  6. [Inject]
  7. [NotNull]
  8. private SynthesizerService? SynthesizerService { get; set; }

1. Recognizer 语音识别, 通过语音采集设备将语音转化为文本

点击开始识别后对录入语音进行识别

  1. @page "/recognizers"
  2. @using BootstrapBlazor.Components
  3. @using Microsoft.AspNetCore.Components
  4. <h3>Recognizer 语音识别</h3>
  5. <h4>通过语音采集设备将语音转化为文本</h4>
  6. <p><b>使用说明:</b></p>
  7. <p>点击 <b>开始识别</b> 后,脚本运行可能会提示要求录音权限,授权后开始讲话,稍等一下,右侧文本框显示语音识别结果,请勿讲完话后直接点击 <b>结束识别</b></p>
  8. <div class="row">
  9. <div class="col-12 col-sm-6 text-center">
  10. <SpeechWave Show="Start" OnTimeout="OnTimeout" class="my-3" />
  11. <Button Text="@ButtonText" OnClick="OnStart" />
  12. </div>
  13. <div class="col-12 col-sm-6">
  14. <Textarea @bind-Value="Result" rows="6" />
  15. </div>
  16. </div>
  17. @code{
  18. [Inject]
  19. [NotNull]
  20. private RecognizerService? RecognizerService { get; set; }
  21. private bool Start { get; set; }
  22. private string? Result { get; set; }
  23. private string ButtonText { get; set; } = "开始识别";
  24. private async Task OnStart()
  25. {
  26. if (ButtonText == "开始识别")
  27. {
  28. Start = true;
  29. ButtonText = "结束识别";
  30. await RecognizerService.RecognizeOnceAsync(Recognize);
  31. }
  32. else
  33. {
  34. await Close();
  35. }
  36. }
  37. private async Task OnTimeout()
  38. {
  39. await Close();
  40. }
  41. private Task Recognize(string result)
  42. {
  43. Result = result;
  44. Start = false;
  45. ButtonText = "开始识别";
  46. StateHasChanged();
  47. return Task.CompletedTask;
  48. }
  49. private async Task Close()
  50. {
  51. await RecognizerService.CloseAsync(Recognize);
  52. }
  53. }

2.Synthesizer 语音合成,将文本内容转化为语音

点击开始合成后对文本内容进行语音合成

  1. @page "/synthesizers"
  2. @using BootstrapBlazor.Components
  3. @using Microsoft.AspNetCore.Components
  4. <h3>Synthesizer 语音合成</h3>
  5. <h4>将文本内容转化为语音</h4>
  6. <div class="row">
  7. <div class="col-12 col-sm-6">
  8. <Textarea @bind-Value="InputText" rows="6" />
  9. </div>
  10. <div class="col-12 col-sm-6 text-center">
  11. <SpeechWave Show="Start" ShowUsedTime="false" class="my-3" />
  12. <Button Text="@ButtonText" OnClick="OnStart" IsDisabled="@IsDisabled" Icon="@ButtonIcon" />
  13. </div>
  14. </div>
  15. @code{
  16. [Inject]
  17. [NotNull]
  18. private SynthesizerService? SynthesizerService { get; set; }
  19. private bool Start { get; set; }
  20. private string? InputText { get; set; }
  21. private string ButtonText { get; set; } = "开始合成";
  22. private string ButtonIcon { get; set; } = "fa fa-fw fa-microphone";
  23. private bool IsDisabled { get; set; }
  24. private async Task OnStart()
  25. {
  26. if (ButtonText == "开始合成")
  27. {
  28. IsDisabled = true;
  29. ButtonIcon = "fa fa-fw fa-spin fa-spinner";
  30. await SynthesizerService.SynthesizerOnceAsync(InputText, Recognize);
  31. }
  32. else
  33. {
  34. await Close();
  35. }
  36. }
  37. private Task Recognize(SynthesizerStatus status)
  38. {
  39. if (status == SynthesizerStatus.Synthesizer)
  40. {
  41. Start = true;
  42. IsDisabled = false;
  43. ButtonIcon = "fa fa-fw fa-spin fa-spinner";
  44. ButtonText = "停止合成";
  45. }
  46. else
  47. {
  48. Start = false;
  49. IsDisabled = false;
  50. ButtonIcon = "fa fa-fw fa-microphone";
  51. ButtonText = "开始合成";
  52. }
  53. StateHasChanged();
  54. return Task.CompletedTask;
  55. }
  56. private async Task Close()
  57. {
  58. await SynthesizerService.CloseAsync(Recognize);
  59. }
  60. }

Blazor Bootstrap 组件库文档

https://www.blazor.zone

写在最后

  希望大佬们看到这篇文章,能给项目点个star支持下,感谢各位!

star流程:

1、访问点击项目链接:BootstrapBlazor

  https://gitee.com/LongbowEnterprise/BootstrapBlazor

2、点击star,如下图,即可完成star,关注项目不迷路:

  

  

另外还有两个GVP项目,大佬们方便的话也点下star呗,非常感谢:

  BootstrapAdmin 项目地址:

  https://gitee.com/LongbowEnterprise/BootstrapAdmin

  SliderCaptcha 项目地址:

  https://gitee.com/LongbowEnterprise/SliderCaptcha

交流群(QQ)欢迎加群讨论

   BA & Blazor ①(795206915)        BA & Blazor ②(675147445)

Blazor Bootstrap 组件库语音组件介绍的更多相关文章

  1. 从0搭建Vue3组件库:button组件

    button组件几乎是每个组件库都有的:其实实现一个button组件是很简单的.本篇文章将带你一步一步的实现一个button组件.如果你想了解完整的组件库搭建,你可以先看使用Vite和TypeScri ...

  2. antd组件库BackTop组件设置动态背景图片的问题

    有这么一个需求,利用antd组件库中的BackTop组件的逻辑,但是自己写样式. 我的目标样式是:有两张图片,一张是normal(正常情况),一张是hover(悬停情况). 这时候就要用到css的动画 ...

  3. 从0搭建vue3组件库: Input组件

    本篇文章将为我们的组件库添加一个新成员:Input组件.其中Input组件要实现的功能有: 基础用法 禁用状态 尺寸大小 输入长度 可清空 密码框 带Icon的输入框 文本域 自适应文本高度的文本域 ...

  4. 16款优秀的Vue UI组件库推荐

    16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...

  5. 值得收藏的8个Web端组件库

    值得收藏的8个Web端组件库 Ant Design 介绍:一个服务于企业级产品的设计体系,基于『确定』和『自然』的设计价值观和模块化的解决方案,让设计者专注于更好的用户体验. 组件库地址:https: ...

  6. [转载]前端——实用UI组件库

    https://www.cnblogs.com/xuepei/p/7920888.html Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https:/ ...

  7. 强烈推荐优秀的Vue UI组件库

    Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...

  8. ui组件库

    基于Vue的Quasar Framework 中文网 http://www.quasarchs.com/ quasarframework/quasar: Quasar Frameworkhttps:/ ...

  9. 【转】优秀的Vue UI组件库

    原文来源:https://www.leixuesong.com/3342 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司 ...

随机推荐

  1. Java案例之评委打分

    /* 案例:评委打分,六个或者更多个评委打分,去到一个最高分,一个最低分,求其他评委的平均值(当评委数量发生改变时不需要进行二次修改) 需求:定义一个数组,长度为6,循环获取输入的数据 定义方法获取数 ...

  2. 4月17日 python学习总结 反射、object内置方法、元类

    一.反射 下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 class People: country="China" def ...

  3. springcloud学习01-用intellij idea搭建Eureka服务

    0.配置intellij idea工具:https://www.cnblogs.com/wang-liang-blogs/p/12060702.html 1.使用maven构建工具构建主工程项目. 1 ...

  4. sqli-labs下载与安装

    Sqli-labs 下载 Sqli-labs是一个印度程序员写的,用来学习sql注入的一个游戏教程. 博客地址为:http://dummy2dummies.blogspot.hk/, 博客当中有一些示 ...

  5. 洛谷 P2375 动物园

    题目详情 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法 ...

  6. Servlet:浏览器下载文件时文件名为乱码问题

    1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcep ...

  7. 什么是Hystrix断路器?我们需要它吗?

    由于某些原因,employee-consumer公开服务会引发异常.情况下使用Hystrix我们定义了回退方法.如果在公开服务中发生异常,则回退方法返回一些默认值 . 如果firstPage metho ...

  8. redis 如何做内存优化?

    1.缩减键值对象 缩减键(key)和值(value)的长度, key长度:如在设计键时,在完整描述业务情况下,键值越短越好. value长度:值对象缩减比较复杂,常见需求是把业务对象序列化成二进制数组 ...

  9. Bean 工厂和 Application contexts 有什么区别?

    Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的bean发布事件.另外,在容器或容器内的对象上执行的那些不得不由be ...

  10. 单片,SOA 和微服务架构有什么区别?

    单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密 封装.第一个面向服务的架构是一种相互通信服务的集合.通信可以涉及简单的数 据传递,也可以涉及两个或多个协调某些活动的服务.微服务架构是 ...