• Bitte beachte, dass wir eine Serverliste sind!
    Wenn du ein Problem auf einem Server hast (z.B. Entbannantrag, etc), dann ist das Forum hier der falsche Ort.
  • Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Visual Studio Speech Programm start...

Minecraft Version
Java

Gamers_of_Games

Minecrafter
Registriert
18 August 2020
Beiträge
3
Diamanten
203
Hi ich habe ein Sprach assisteneten programmirt und wollte nur eine sache wissen die ich net genau weis wie kann ich machen das der assistent nur aufnimt was ich sage wen ich ein schlag wort gemacht habe z.b. Alexa oder jey ...

Hier mein Bisheriger code:

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 System.Speech.Recognition;
using System.Speech.Synthesis;
using System.IO;

namespace T_VoiceAssistant
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
SpeechRecognitionEngine r = new SpeechRecognitionEngine();
SpeechSynthesizer s = new SpeechSynthesizer();

string[] commands = new string[] { "Jey Hallo", "Jey Guten Tag", "Jey Wer bist du", "Jey Wie Gehts dir", "Jey wer hat dich gemacht", "Jey Warum wurdest du gemacht" };

public MainWindow()
{
InitializeComponent();

Loaded += MainWindow_Loaded;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Choices vocabulary = new Choices();
vocabulary.Add(commands);

GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Append(vocabulary);

Grammar grammar = new Grammar(gBuilder);

r.LoadGrammar(grammar);
r.SetInputToDefaultAudioDevice();
r.SpeechRecognized += R_SpeechRecognized;


r.RecognizeAsync(RecognizeMode.Multiple);
s.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Teen);
}

private void R_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
string request = e.Result.Text;
string answer = "";

lblRequest.Content = request;

switch (request)
{
case "Jey Hallo":
answer = "Moin";
break;
case "Jey Guten Tag":
answer = "Hallo";
break;
case "Jey Wer bist du":
answer = "Ich bin dein Sprachassistent";
break;
case "Jey Wie Gehts dir":
answer = "Gut und Dir";
break;
case "Jey wer hat dich gemacht":
answer = "Tim Der Beste Youtuber der welt";
break;
case "Jey Warum wurdest du gemacht":
answer = "Um dir zu Assistiren";
break;

}

if (answer != "")
{
s.SpeakAsync(answer);
}
}
}
}
 

Luki_xx

Schafhirte
Registriert
12 Juni 2019
Beiträge
107
Diamanten
378
Minecraft
Luki_xx
Ich glaube dafür bist du im falschen Forum, die meisten hier werden eher mit Java programmieren.
Ich wollte mich zwar selbst einmal damit beschäftigen mir fehlte dann aber die Zeit.

Was ich mich aber Frage, wie soll das den bitte gehen. Du musst die ganze Zeit aufnehmen sonst kann ja auch kein Keywors erkennt werden. Es darf halt nur etwas ausgeführt werden wenn zuvor ein "Aufweckwort" gesagt wurde. Dann kannst du einen Timer starten, die anderen Eingaben zulassen und nach Ablauf der Zeit wieder verbieten. Wenn du nicht das gemeint hast, dann keine Ahnung was du vorhast.
 

Luki_xx

Schafhirte
Registriert
12 Juni 2019
Beiträge
107
Diamanten
378
Minecraft
Luki_xx
Also ich glaube das ich verstehe was du meinst. Die Sache ist wohl, ohne zusagen wie irgendwas da zu 100% funktioniert, das er wohl immer den am ähnlichsten klingenden Befehl nehmen wird d.h. er tut einfach so als hätte er das in deinen Fall 1 Wort überhört. Zumindest könnte das so sein, ob es so ist keine Ahnung.

Beheben könnte sich das wirklich lassen in dem du das Keyword als eigenen Befehl definierst und bei den anderen Befehlen den Key aber entfernst. Die andere Befehle sollen dann nur ausgeführt werden können wenn in einer bestimmten Zeit zuvor das Keyword erkannt wurde.

Wie bereits erst gesagt, beim Keyword einen einmaligen Timer mit, was weiß ich 10000ms starten, und nach Ablauf wieder deaktivieren. Könnte zumindest mal in die richtige Richtung gehen.

Falls das Problem was anderes ist hab ich es nicht verstanden.
 
Oben