我正在尝试寻找免费的语音识别C#窗体应用程序可执行文件,它可以作为谷歌语音识别,识别和转换绝对新词到文本。
我试着以不同的方式使用System.Speech.Recognition;,但它对预先录制的命令很有效,我无法获得这样的结果,因为它与谷歌语音识别一起使用,例如,它至少有95%的正确结果,这是足够好的,但很明显,如果我没有密钥,它就不能免费使用,也无法在可执行文件中使用它。
所以我想试试Microsoft Cognitive Services的Bing Speech API,但是找不到任何如何编码的例子,一些基本的例子。如果有人用过这个工具,你能帮我弄清楚吗?
发布于 2016-12-09 15:37:12
嗨,也许这可以帮助你一个简单的冰语音应用程序接口的例子,这不是winform这是WPF应用程序C#
using Microsoft.CognitiveServices.SpeechRecognition;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.ProjectOxford.SpeechRecognition;
using System.Threading;
using System.Configuration;
namespace BingSpeech
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
AutoResetEvent _FinalResponceEvent;
MicrophoneRecognitionClient _microphoneRecognitionClient;
public MainWindow()
{
InitializeComponent();
RecordButton.Content = "Start\nRecording";
_FinalResponceEvent = new AutoResetEvent(false);
OutputTextbox.Background = Brushes.White;
OutputTextbox.Foreground = Brushes.Black;
}
private void RecordButton_Click(object sender, RoutedEventArgs e)
{
RecordButton.Content = "Listening ...";
RecordButton.IsEnabled = false;
OutputTextbox.Background = Brushes.Green;
OutputTextbox.Foreground = Brushes.White;
ConvertSpeechToText();
}
private void ConvertSpeechToText()
{
var speechRecognitionMode = SpeechRecognitionMode.ShortPhrase;
string language = "en-us";
string subscriptionKey = ConfigurationManager.AppSettings["MicrosoftSpeechApiKey"].ToString();
_microphoneRecognitionClient = SpeechRecognitionServiceFactory.CreateMicrophoneClient(
speechRecognitionMode,
language,
subscriptionKey
);
_microphoneRecognitionClient.OnPartialResponseReceived += OnPartialResponseReceivedHandler;
_microphoneRecognitionClient.OnResponseReceived += OnMicShortPhraseResponceReceivedHandler;
_microphoneRecognitionClient.StartMicAndRecognition();
}
private void OnPartialResponseReceivedHandler(object sender, PartialSpeechResponseEventArgs e)
{
string result = e.PartialResult;
jarvis.SpeakAsync(e.PartialResult);
Dispatcher.Invoke(() =>
{
OutputTextbox.Text = (e.PartialResult);
OutputTextbox.Text += ("\n");
});
}
private void OnMicShortPhraseResponceReceivedHandler(object sender, SpeechResponseEventArgs e)
{
Dispatcher.Invoke((Action)(() =>
{
_FinalResponceEvent.Set();
_microphoneRecognitionClient.EndMicAndRecognition();
_microphoneRecognitionClient.Dispose();
_microphoneRecognitionClient = null;
RecordButton.Content = "Start\nRecording";
RecordButton.IsEnabled = true;
OutputTextbox.Background = Brushes.White;
OutputTextbox.Foreground = Brushes.Black;
}));
}
}
}https://stackoverflow.com/questions/40933664
复制相似问题