Blazor Bootstrap 组件库语音组件介绍
Speech 语音识别与合成
通过麦克风语音采集转换为文字(STT),或者通过文字通过语音朗读出来(TTS)
本组件依赖于 BootstrapBlazor.AzureSpeech,使用本组件时需要引用其组件包
Demo https://www.blazor.zone/speechs
Nuget 包安装
使用 nuget.org 进行 BootstrapBlazor.AzureSpeech 组件的安装
.NET CLI
dotnet add package BootstrapBlazor.AzureSpeech
PackageReference
<PackageReference Include="BootstrapBlazor.AzureSpeech" />
注册服务
Program.cs
// 增加语音服务
builder.Services.AddBootstrapBlazorAzureSpeech();
使用服务
// 语音识别服务
[Inject]
[NotNull]
private RecognizerService? RecognizerService { get; set; }
// 语音合成服务
[Inject]
[NotNull]
private SynthesizerService? SynthesizerService { get; set; }
1. Recognizer 语音识别, 通过语音采集设备将语音转化为文本
点击开始识别后对录入语音进行识别
@page "/recognizers"
@using BootstrapBlazor.Components
@using Microsoft.AspNetCore.Components
<h3>Recognizer 语音识别</h3>
<h4>通过语音采集设备将语音转化为文本</h4>
<p><b>使用说明:</b></p>
<p>点击 <b>开始识别</b> 后,脚本运行可能会提示要求录音权限,授权后开始讲话,稍等一下,右侧文本框显示语音识别结果,请勿讲完话后直接点击 <b>结束识别</b></p>
<div class="row">
<div class="col-12 col-sm-6 text-center">
<SpeechWave Show="Start" OnTimeout="OnTimeout" class="my-3" />
<Button Text="@ButtonText" OnClick="OnStart" />
</div>
<div class="col-12 col-sm-6">
<Textarea @bind-Value="Result" rows="6" />
</div>
</div>
@code{
[Inject]
[NotNull]
private RecognizerService? RecognizerService { get; set; }
private bool Start { get; set; }
private string? Result { get; set; }
private string ButtonText { get; set; } = "开始识别";
private async Task OnStart()
{
if (ButtonText == "开始识别")
{
Start = true;
ButtonText = "结束识别";
await RecognizerService.RecognizeOnceAsync(Recognize);
}
else
{
await Close();
}
}
private async Task OnTimeout()
{
await Close();
}
private Task Recognize(string result)
{
Result = result;
Start = false;
ButtonText = "开始识别";
StateHasChanged();
return Task.CompletedTask;
}
private async Task Close()
{
await RecognizerService.CloseAsync(Recognize);
}
}
2.Synthesizer 语音合成,将文本内容转化为语音
点击开始合成后对文本内容进行语音合成
@page "/synthesizers"
@using BootstrapBlazor.Components
@using Microsoft.AspNetCore.Components
<h3>Synthesizer 语音合成</h3>
<h4>将文本内容转化为语音</h4>
<div class="row">
<div class="col-12 col-sm-6">
<Textarea @bind-Value="InputText" rows="6" />
</div>
<div class="col-12 col-sm-6 text-center">
<SpeechWave Show="Start" ShowUsedTime="false" class="my-3" />
<Button Text="@ButtonText" OnClick="OnStart" IsDisabled="@IsDisabled" Icon="@ButtonIcon" />
</div>
</div>
@code{
[Inject]
[NotNull]
private SynthesizerService? SynthesizerService { get; set; }
private bool Start { get; set; }
private string? InputText { get; set; }
private string ButtonText { get; set; } = "开始合成";
private string ButtonIcon { get; set; } = "fa fa-fw fa-microphone";
private bool IsDisabled { get; set; }
private async Task OnStart()
{
if (ButtonText == "开始合成")
{
IsDisabled = true;
ButtonIcon = "fa fa-fw fa-spin fa-spinner";
await SynthesizerService.SynthesizerOnceAsync(InputText, Recognize);
}
else
{
await Close();
}
}
private Task Recognize(SynthesizerStatus status)
{
if (status == SynthesizerStatus.Synthesizer)
{
Start = true;
IsDisabled = false;
ButtonIcon = "fa fa-fw fa-spin fa-spinner";
ButtonText = "停止合成";
}
else
{
Start = false;
IsDisabled = false;
ButtonIcon = "fa fa-fw fa-microphone";
ButtonText = "开始合成";
}
StateHasChanged();
return Task.CompletedTask;
}
private async Task Close()
{
await SynthesizerService.CloseAsync(Recognize);
}
}
Blazor Bootstrap 组件库文档
写在最后
希望大佬们看到这篇文章,能给项目点个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 组件库语音组件介绍的更多相关文章
- 从0搭建Vue3组件库:button组件
button组件几乎是每个组件库都有的:其实实现一个button组件是很简单的.本篇文章将带你一步一步的实现一个button组件.如果你想了解完整的组件库搭建,你可以先看使用Vite和TypeScri ...
- antd组件库BackTop组件设置动态背景图片的问题
有这么一个需求,利用antd组件库中的BackTop组件的逻辑,但是自己写样式. 我的目标样式是:有两张图片,一张是normal(正常情况),一张是hover(悬停情况). 这时候就要用到css的动画 ...
- 从0搭建vue3组件库: Input组件
本篇文章将为我们的组件库添加一个新成员:Input组件.其中Input组件要实现的功能有: 基础用法 禁用状态 尺寸大小 输入长度 可清空 密码框 带Icon的输入框 文本域 自适应文本高度的文本域 ...
- 16款优秀的Vue UI组件库推荐
16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...
- 值得收藏的8个Web端组件库
值得收藏的8个Web端组件库 Ant Design 介绍:一个服务于企业级产品的设计体系,基于『确定』和『自然』的设计价值观和模块化的解决方案,让设计者专注于更好的用户体验. 组件库地址:https: ...
- [转载]前端——实用UI组件库
https://www.cnblogs.com/xuepei/p/7920888.html Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https:/ ...
- 强烈推荐优秀的Vue UI组件库
Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...
- ui组件库
基于Vue的Quasar Framework 中文网 http://www.quasarchs.com/ quasarframework/quasar: Quasar Frameworkhttps:/ ...
- 【转】优秀的Vue UI组件库
原文来源:https://www.leixuesong.com/3342 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司 ...
随机推荐
- 集合 copy
#集合的创建 # set = set(["barry",1,2]) # print(set) # set1 = {1,2,3} #集合的增 # set1 = {'alex','wu ...
- Monkey的参数及简单使用
什么是Monkey? Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试.主要是为了测试app是否存在无响应和 ...
- Cobalt Strike之网站克隆
点击 attack --> Web-dirve-by --> clone file 填写你要克隆的网站.带有端口 Clone URL:克隆目标网站的URL 注意问题:URL需要添加http ...
- 多数据源并且数据库类型不同的情况下PageHelper的使用
一.问题来源 最近开发一个项目需要依赖两个数据源,数据源类型分别为oracle和postgresql,代码中使用com.github.pagehelper分页插件进行分页,代码运行过程中postgre ...
- BIO、NIO、AIO 有什么区别?
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低.NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 ...
- Java 中怎么获取一份线程 dump 文件?
在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件.在 Windows 下,你可以按下 Ctrl + Break 来获取 ...
- jenkins-learning
常规的打包方式: 提交代码 拉去代码并打包:war包和jar包 上传到服务器 关闭当前程序 启动新的jar包 查看新的jar包是否起作用 jenkins自动化流程: CI(Continuous int ...
- memcached 是原子的吗?
所有的被发送到 memcached 的单个命令是完全原子的.如果您针对同一份数据 同时发送了一个 set 命令和一个 get 命令,它们不会影响对方.它们将被串行化. 先后执行.即使在多线程模式,所有 ...
- 说出 5 个 JDK 1.8 引入的新特性?
Java 8 在 Java 历史上是一个开创新的版本,下面 JDK 8 中 5 个主要的特性: Lambda 表达式,允许像对象一样传递匿名函数 Stream API,充分利用现代多核 CPU,可以写 ...
- 学习Nginx(一)
实验目的 通过nginx实现反向代理的功能,类似apache反向代理和haproxy反向代理 工作中用nginx做反向代理和负载均衡的也越来越多了 有些公司从web服务器到反向代理,都使用nginx. ...