Wir haben eine MVC-Website und möchten nun eine Funktionalität hinzufügen, mit der wir die Fähigkeit haben, Text auf der Client-Seite vorzulesen. Wir zeigen eine Reihe von Rechnungen an und möchten die Rechnungsdetails vorlesen. Ich weiß, dass Sie die System.Speech-Bibliothek mit Desktop-Anwendungen verwenden können, um dies zu erreichen, indem Sie die Details weitergeben, die vorgelesen werden sollen, aber weiß jemand, wie wir das in dem MVC-Projekt tun können.
Antworten
Zu viele Anzeigen?
John Kalberer
Punkte
5500
Nun, das ist mir jetzt gerade eingefallen und es wurde nicht getestet, aber Sie könnten etwas Ähnliches tun:
public ActionResult Speak(string text)
{
var speech = new SpeechSynthesizer();
speech.Speak(text);
byte[] bytes;
using (var stream = new MemoryStream())
{
speech.SetOutputToWaveStream(stream);
bytes = stream.ToArray();
}
return File(bytes, "audio/x-wav");
}
Michael Aguilar
Punkte
717
Ich habe recherchiert und diesen Weg gefunden, der ähnlich der Antwort von John Kalberer ist:
public async Task Index()
{
Task task = Task.Run(() =>
{
using (var synth = new SpeechSynthesizer())
{
synth.SelectVoice("Microsoft Sabina Desktop");
using (var stream = new MemoryStream())
{
synth.SetOutputToWaveStream(stream);
synth.Speak("hola mundo");
byte[] bytes = stream.GetBuffer();
return File(bytes, "audio/x-wav");
}
}
});
return await task;
}
In diesem Fall verwende ich die spanische Stimme, aber natürlich können Sie Ihre Stimme auswählen oder das synth.SelectVoice
vermeiden und die voreingestellte verwenden