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.
Computerstimme per Python
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
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
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!
Sollte es dynamisch sein und die Texte stehen zuvor nicht fest, dann ist der Vorschlag von Barabbas besser!
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!
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!
Danke, Danke für die ganzen Antworten
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 zusagenWenn es sich nur um ein paar feststehende Worte/Sätze handelt, dann könntest Du diese auch als wav, mp3,
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.Lopt hat geschrieben: An soetwas simples hab ich natürlich nicht gedacht!
Das kann schnell ausarten. Dann lieber gleich was fertiges verwenden, wie vorgeschlagen.
Oh das hab ich schon mal gepostet, aber jetzt nomml.
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()