我想制作一个能够在运行中识别和呈现英语和西班牙语的语音到文本到翻译实用程序。"首先,我需要它能够处理两种语言(翻译片段我将推迟到以后)。
IOW,我希望它能够处理(通过设备的扬声器)对话,例如:
西班牙语演讲者的声音被捕捉并呈现:" Que estas haciendo?"
英语发言者的声音被捕获并呈现:"我不会说西班牙语,意大利语或任何语言。说英语!"
西班牙语发言人:"我问过你在做什么。"
英语发言者:"哦,真的不多;我的意思是,没有你的业务!"
(等)
我看到here我可以像这样建立一个语音到文本的会话:
using Microsoft.Speech.Recognition;
using Microsoft.Speech.Synthesis;
namespace ConsoleSpeech
{
class ConsoleSpeechProgram
{
static SpeechSynthesizer ss = new SpeechSynthesizer();
static SpeechRecognitionEngine sre;
static void Main(string[] args)
{
try
{
CultureInfo ci = new CultureInfo("en-us");
sre = new SpeechRecognitionEngine(ci);
sre.SetInputToDefaultAudioDevice();
sre.SpeechRecognized += sre_SpeechRecognized;
. . .
static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
string txt = e.Result.Text;
float confidence = e.Result.Confidence;
Console.WriteLine("\nRecognized: " + txt);
if (confidence < 0.60) return;
. . .
由于CultureInfo类是用特定语言实例化的(上面显示的是美国英语),我猜它会呈现&#34; Que estas haciendo?&#34;就像&#34; Kay正在扔低头,哦?&#34;因此具有非常低的Result.Confidence值。
有没有办法同时响应两种语言,例如通过实例化两个CultureInfo类:
CultureInfo ciEnglish = new CultureInfo("en-us");
CultureInfo ciSpanish = new CultureInfo("es-mx");
即使这是可行的,这两个班级是否愿意&#34;愿意&#34;分享麦克风,并且当他们不明白所说的内容时,要足够聪明地放弃对方?
我很害怕这将成为其中一个&#34; hard&#34; (阅读&#34;几乎不可能&#34;)挑战。如果我错了,请告诉我。
在Bulltorious here的回答中,似乎可能是#34; SpeechRecognized&#34;事件可以尝试确定所说的语言,但是没有足够的代码显示是否真的如此。