C# 如何获取语音数据?
在我的程序中,我可以使用用户的声音来编辑词汇、文本、单词等等。但是,有没有办法获得用户声音的音调?我将windows语音API与c#一起使用 下面是我用来获取语音数据的部分代码C# 如何获取语音数据?,c#,.net,windows,speech-recognition,C#,.net,Windows,Speech Recognition,在我的程序中,我可以使用用户的声音来编辑词汇、文本、单词等等。但是,有没有办法获得用户声音的音调?我将windows语音API与c#一起使用 下面是我用来获取语音数据的部分代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Speech.Recognition; using System.Speech.Synthesis; using Syste
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Windows.Forms;
using System.IO;
namespace Speech_Recognizer
{
public class RecognizeSpeech
{
private SpeechRecognitionEngine sEngine; //Speech recognition engine
private SpeechSynthesizer sSpeak; //Speech synthesizer
string text3 = "";
public RecognizeSpeech()
{
//Make the recognizer ready
sEngine = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
//Load grammar
Choices sentences = new Choices();
sentences.Add(new string[] { "I am hungry" });
GrammarBuilder gBuilder = new GrammarBuilder(sentences);
Grammar g = new Grammar(gBuilder);
sEngine.LoadGrammar(g);
//Add a handler
sEngine.SpeechRecognized +=new EventHandler<SpeechRecognizedEventArgs>(sEngine_SpeechRecognized);
sSpeak = new SpeechSynthesizer();
sSpeak.Rate = -2;
//Computer speaks the words to get the phones
Stream stream = new MemoryStream();
sSpeak.SetOutputToWaveStream(stream);
sSpeak.Speak("I was hungry");
stream.Position = 0;
sSpeak.SetOutputToNull();
//Configure the recognizer to stream
sEngine.SetInputToWaveStream(stream);
sEngine.RecognizeAsync(RecognizeMode.Single);
}
//Start the speech recognition task
private void sEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
string text = "";
if (e.Result.Text == "I am hungry")
{
foreach (RecognizedWordUnit wordUnit in e.Result.Words)
{
text = text + wordUnit.Pronunciation + "\n";
}
MessageBox.Show(e.Result.Text + "\n" + text);
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统语音识别;
使用系统、语音、合成;
使用System.Windows.Forms;
使用System.IO;
名称空间语音识别器
{
公共类识别语音
{
私有语音识别引擎sEngine;//语音识别引擎
专用语音合成器sSpeak;//语音合成器
字符串text3=“”;
公众认可的言论
{
//准备好识别器
sEngine=new SpeechRecognitionEngine(新系统、全球化、文化信息(“en-US”);
//加载语法
选择句子=新的选择();
添加(新字符串[]{“我饿了”});
GrammarBuilder gBuilder=新的GrammarBuilder(句子);
语法g=新语法(gBuilder);
加载语法(g);
//添加一个处理程序
sEngine.speechrecogned+=新事件处理程序(sEngine\u speechrecogned);
sSpeak=新的语音合成器();
sSpeak.Rate=-2;
//电脑说话是为了得到手机
Stream=新的MemoryStream();
sSpeak.SetOutputToWaveStream(流);
说话(“我饿了”);
流位置=0;
sSpeak.setoutputtonll();
//将识别器配置为流
sEngine.SetInputToWaveStream(流);
sEngine.RecognizeAsync(RecognizeMode.Single);
}
//启动语音识别任务
私有void sEngine_SpeechRecognized(对象发送方,SpeechRecognizedEventArgs e)
{
字符串文本=”;
如果(e.Result.Text==“我饿了”)
{
foreach(在e.Result.Words中识别出WordOrdUnit wordUnit)
{
text=text+wordUnit.发音+“\n”;
}
MessageBox.Show(e.Result.Text+“\n”+文本);
}
}
}
}
如您所见,
SpeechSynthesis
可以设置和获取语音速率、声音等。如何从用户的语音中获取音调?我可以获取任何其他信息吗?不,Microsoft SR引擎不会从用户的语音中返回音调数据。过了很长时间,我得到了答复。非常感谢:)