Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Speech API [C#]

Îåêßíçóå áðü ôï ìÝëïò Brolly. Τελευταία δημοσίευση από το μέλος Brolly στις 08-02-2008, 02:09. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-02-2008, 14:34 39935

    Speech API [C#]

    Καλημέρα σας, εχω κανει μια form οπου εχω ενα textbox και 2 buttons. Το ενα SpeakButton και το αλλο StopButton. Εχω κανει να περνει το text απο το textbox και να το διαβαζει και να το λεει με την βοηθεια του Microsoft Speech Library. Αυτο που θελω να κανω αλλα δε μπορω ουτε βρισκω κατι αναλογο στο web, ειναι οτι θελω να μαρκαρει την λεξη την οποια λεει εκεινη την στιγμη. Ειχα δει καποιο παραδειγμα σε Delphi, δηλαδη ο τυπος δημιουργουσε ενα OnWord eventhandler, αλλα ηταν ετοιμο. Στην περιπτωση μου δεν εχει κανενα ετοιμο event.
    Οποιος εχει καποια ιδεα ευχαριστως να τον ακουσω Smile

    (Αναφέρομαι σε C#)
  •  07-02-2008, 15:43 39941 σε απάντηση της 39935

    Απ: Speech API [C#]

    Το Speech API παρέχει COM αντικείμενα οπότε θα πρέπει να τα χειριστείς όπως οποιοδήποτε άλλο COM αντικείμενο. Όταν προσθέσεις το reference στο SAPI θα δημιουργηθούν οι κατάλληλες wrapper κλάσεις για τα αντικείμενα του SAPI μεταξύ των οποίων και του SpVoice. Το SpVoice έχει και το Word event το οποίο θα εμφανιστεί ως κανονικό .NET event, οπότε το χειρίζεσαι όπως κάθε event (δημιουργείς δηλαδή το κατάλληλο delegate ή αν βαριέσαι, πατάς tab και δημιουργείται αυτόματα). Το κείμενο στο TextBox το επιλέγεις με την Select. Για να εμφανιστεί όμως η επιλογή σου θα πρέπει το TextBox να έχει το focus και η εντολή Speak να έχει το SVSFlagsAsync. Διαφορετικά πρώτα προφέρεται το κείμενο και μετά σηκώνονται τα events. Ο κώδικας θα είναι κάπως έτσι:

    ...
    using SpeechLib;

    namespace SapiTest
    {
    public partial class Form1 : Form
    {
    SpVoice voice = new SpVoiceClass();
    public Form1()
    {
    InitializeComponent();
    voice.Word += new _ISpeechVoiceEvents_WordEventHandler(voice_Word);
    }

    private void button1_Click(object sender, EventArgs e)
    {
    voice.Speak(this.textBox1.Text,SpeechVoiceSpeakFlags.SVSFlagsAsync);
    this.textBox1.Focus();
    }

    void voice_Word(int StreamNumber, object StreamPosition, int CharacterPosition, int Length)
    {
    this.textBox1.Select(CharacterPosition, Length);
    }
    }
    }


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-02-2008, 02:09 39969 σε απάντηση της 39941

    Απ: Speech API [C#]

    Ευχαριστώ Παναγιώτη :)
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems