Seite 1 von 1

Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 12:52
von Lopt
Ich möchte das der Computer mir in gewissen Situationen Sachen antwortet, dazu such ich eine Computerstimme die ich per Python ansteuern kann.
Warum: Ich versuch derzeit mein Computer per Sprachbefehle zu steuern, das realisier ich per Python Skripte die die jeweiligen Wörter als Parameter erhalten, ("Musik Band", "Tee, Earl Grey, Heiß") und ich brauch in gewissen Situationen eine Antwort vom Computer.

Theoretisch besteht zwar die Möglichkeit, das ich selber etwas sprech, allerdings finde ich Computerstimmen ästhetischer als meine eigene.

Gibt es ein Modul dafür? Ich habe nichts dergleichen gefunden. Oder gibt es evtl eine Möglichkeit über Windows/Linux Programme zu gehen dafür?

Danke.

Re: Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 15:06
von derdon
Auf dem Mac gibt es den Shell-Befehl say, der mittels subprocess sehr einfach zu benutzen ist. Für Windows und Linux kann ich leider nicht weiterhelfen, vielleicht gibt es da ja etwas äquivalentes.

Re: Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 15:21
von Barabbas
Hallo,

unter Linux bietet sich dafür "espeak" an, damit kannst du komplett dynamische Sprachausgaben erzeugen. Wenn es nur um ein, zwei vorgefertigte Ausgaben geht ("Ja", "Nein" oder wasweißich), interessiert dich vll. ein Blick auf diese Demo.

Für espeak gibt es sogar Python-Bindings - ich denke aber, dass subprocess auch völlig ausreicht.



Schönen Gruß,

brb

Re: Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 17:21
von lunar
Für Windows gibt es die Microsoft Speech API.

Re: Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 17:30
von LivingOn
Wenn es sich nur um ein paar feststehende Worte/Sätze handelt, dann könntest Du diese auch als wav, mp3, ... speichern und je nach Bedarf abspielen. Eine recht gute Sprachausgabe findest Du z.B. hier. Einfach gewünschten Text eingeben, Audioaufzeichnug (z.B. audacity) starten und Play drücken ;-)
Sollte es dynamisch sein und die Texte stehen zuvor nicht fest, dann ist der Vorschlag von Barabbas besser!

Re: Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 20:42
von problembär
Ich hatte bisher unter Linux immer mbrola

http://tcts.fpms.ac.be/synthesis/

verwendet. Dafür gibt es sehr viele Stimmen in verschiedenden Sprachen. Die Installation war etwas "tricky", siehe z.B. hier.
Auch das Klangergebnis, das ich bisher damit erzielen konnte, war leider nicht so gut wie das von espeak. Ich bin beeindruckt!

Re: Computerstimme per Python

Verfasst: Dienstag 21. Juni 2011, 23:12
von Lopt
Danke, Danke für die ganzen Antworten :)
Wenn es sich nur um ein paar feststehende Worte/Sätze handelt, dann könntest Du diese auch als wav, mp3,
An soetwas simples hab ich natürlich nicht gedacht! Es sind zwar einige verschiedene Wörter (Liste von Bands zB) aber die ändern sich kaum. Aber ich denk ich werd erstmal die anderen Möglichkeit ausprobieren/sondieren und dann ggf darauf zurückgreifen wenn mir die nicht zusagen :)

Re: Computerstimme per Python

Verfasst: Mittwoch 22. Juni 2011, 00:00
von nezzcarth
Lopt hat geschrieben: An soetwas simples hab ich natürlich nicht gedacht!
Simpel ist relativ ;) Das fällt von der Grundidee her unter Unit Selection, und je nachdem, wie man das angeht ist es nicht ganz so simpel.

Das kann schnell ausarten. Dann lieber gleich was fertiges verwenden, wie vorgeschlagen.

Re: Computerstimme per Python

Verfasst: Mittwoch 22. Juni 2011, 09:18
von Newcomer
Oh das hab ich schon mal gepostet, aber jetzt nomml. :P

Code: Alles auswählen

import win32com.client as wcc
from tkinter import *
class Sprecher(object):
    def __init__(self):
        self.standard="nichts"
        self.speaker=wcc.Dispatch("SAPI.SpVoice")
        self.fenster=Tk()

        self.frame1=Frame(master=self.fenster,relief=RIDGE,bd=2)
        self.frame2=Frame(master=self.fenster,relief=RIDGE,bd=3)

        self.speakButton=Button(master=self.frame1,text="Sprechen",command=self.sprechen)
        self.speakEntry=Entry(master=self.frame1,width=80)

        self.tonScale=Scale(master=self.frame2,from_=10,to=100)
        self.schnellScale=Scale(master=self.frame2,from_=-10,to=10)
        self.lageScale=Scale(master=self.frame2,from_=-10,to=10)

        self.sprechendLabel=Label(master=self.fenster,text="Gesprochen wird: "+self.standard)

        self.tonLabel=Label(master=self.frame2,text="Lautstärke bestimmen")
        self.schnellLabel=Label(master=self.frame2,text="Tonschnelle bestimmen")
        self.lageLabel=Label(master=self.frame2,text="Tonlage bestimmen")


        self.frame1.grid(row=1,padx=10,pady=10)
        self.frame2.grid(row=2)
        self.speakButton.grid(padx=10,pady=10)
        self.speakEntry.grid(padx=10,pady=10)

        self.tonScale.grid(row=3,column=1,pady=10,padx=10)
        self.schnellScale.grid(row=3,column=2,pady=10,padx=10)
        self.lageScale.grid(row=3,column=3,pady=10,padx=10)
        self.tonLabel.grid(row=4,column=1,pady=5,padx=10)
        self.schnellLabel.grid(row=4,column=2,pady=5,padx=10)
        self.lageLabel.grid(row=4,column=3,pady=5,padx=10)
        
        


        self.sprechendLabel.grid(row=4,pady=10,padx=10)
        
        self.fenster.mainloop()
    

    def sprechen(self):
        textApp=self.speakEntry.get()
        self.sprechendLabel.config(text="Gesprochen wird: "+textApp)
        tonSchnelle=int(self.schnellScale.get())
        tonLage=int(self.lageScale.get())
        tonVolume=int(self.tonScale.get())

        
        self.speaker.Rate=tonSchnelle
        self.speaker.Volume=tonVolume

        text="""<pitch middle="{0}" > {1} </pitch> """.format(tonLage,textApp)

        self.speaker.Speak(text)
                

a=Sprecher()

Re: Computerstimme per Python

Verfasst: Sonntag 25. Juli 2021, 18:12
von WildCat
Unter Linux könntest du gTTS benutzen.

Re: Computerstimme per Python

Verfasst: Montag 26. Juli 2021, 14:23
von darktrym
10Jahre!