语音命令控制库VoiceNET

VoiceNET库是一个开源的.NET库,它通过标签预测技术简化了语音命令控制功能的实现。它支持在线和离线使用,并且可以轻松集成到任何.NET应用程序中。这个库是由FPT Edu Research Festival 2021比赛的一个研究项目发展而来的,旨在帮助人们更容易地访问语音识别技术。

VoiceNET库的工作原理

VoiceNET库使用ML.NET和Spectrogram库,将语音转换为频谱图。然后,利用ML.NET库中的图像分类功能来标记标签。

特点

VoiceNET库的主要特点包括:

  • 实时语音命令控制
  • 基于录音的语音命令控制

优势

使用VoiceNET库的优势包括:

  • 易于将库集成到程序中
  • 代码简单,易于使用
  • 支持在线和离线使用
  • 支持世界上任何通信语言
  • 免费使用

劣势

尽管VoiceNET库有很多优点,但它也有一些劣势:

  • 创建库的模型需要较长时间
  • 将模型加载到程序中可能会比较慢
  • 在标签识别时仍然存在一定的错误率

安装

要安装VoiceNET库,可以使用.NET Core CLI:

dotnet add package VoiceNET.Library

或者使用NuGet包管理器:

Install-Package VoiceNET.Library

快速开始

例如,创建一个实时语音控制的图像库:

在Windows Forms界面中拖放:

  • 标签:lbResult
  • 计时器:tmGetResult (Interval=1)

在Form_Load中:

C# VBuilder.ModelPath(""); if(VBuilder.loadModel()) { tmGetResult.Start(); VBuilder.WFListener(); }

在tmGetResult中:

C# lbResult.Text = VBuilder.WFGetResult;

如果想停止监听,请使用以下代码:

C# VBuilder.WFStopListener();

例如,通过录音识别命令标签:

在Windows Forms界面中拖放:

  • 按钮:btnRecord, btnStop
  • 标签:lbResult

在Form_Load中:

C# VBuilder.ModelPath(""); if(VBuilder.loadModel()) { //do something after Load Model } else { //do something if fail }

在btnRecord_Click中:

C# VBuilder.StartRecord(); btnStop.Enabled = true; btnRecord.Enabled = false;

在btnStop中:

C# VBuilder.StopRecord(); lbResult.Text = VBuilder.Result(true); btnRecord.Enabled = true; btnStop.Enabled = false;

从v1.0.5版本开始支持WPF实时语音控制。在WPF应用程序界面中拖放:

  • 标签:lbResult

在MainWindow()中:

C# public DispatcherTimer tmGetResult = new DispatcherTimer(); tmGetResult.Interval = TimeSpan.FromSeconds(1); tmGetResult.Tick += tmGetResult_Tick;

在MainWindow()中:

C# VBuilder.ModelPath(""); if(VBuilder.loadModel()) { tmGetResult.Start(); VBuilder.WPFListener(); }

在void tmGetResult_Tick中:

C# lbResult.Content = VBuilder.WPFGetResult;

如果想停止监听,请使用以下代码:

C# VBuilder.WPFStopListener();

从v1.0.5版本开始支持WPF录音。更多使用方法请参考VoiceNET.Lib.WPF.Record示例。

从v1.0.2.4版本开始支持ASP.NET MVC。更多使用方法请参考VoiceNET.Lib.Web.AspNet示例。

从v1.0.6.8版本开始支持ASP.NET Core Web API。更多使用方法请参考SampleWebAPI示例,包括ASP.NET Core Web API和WinForm App (WinForm Realtime)使用Web API的示例。

如何创建模型

使用包含的MicBuilder程序为数据集构建MLModel.zip文件。

设置

麦克风音量调整:

C# VBuilder.setVolume(80);

环境噪音减少设置:

  • 最小值:调整执行捕获的最小音量级别。输入声音小于这个部分将被视为噪音。默认值是10%。
  • C# VBuilder.setMinVolume(10);
  • 连续性:当声音输入 > 最小音量时,声音持续多长时间。默认值是250毫秒。
  • C# VBuilder.setMicTime(250);

资源

  • FftSharp
  • Microsoft.ML
  • Microsoft.ML.ImageAnalytics
  • Microsoft.ML.Vision
  • NAudio
  • SciSharp.TensorFlow.Redist

许可证

MIT LICENSE

Spectrogram

Spectrogram是一个.NET库,用于从预先录制的信号或声卡的实时音频创建频谱图。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485