Ich wollte einige Inhalte mit VOICEROID erstellen, aber ich kann die Stimme auf einem Computer ohne VOICEROID-Software nicht hören! !! ** ** **
Dann dachte ich: "Lass uns die API finden und etwas dagegen tun!", Aber ich suchte nach der API, konnte sie aber überhaupt nicht finden, also gab ich den eingegebenen Text über VOICEROID weiter, speicherte die Audiodatei und machte etwas, um sie aufzurufen. Es war.
** Referenzartikel ** Versuchen Sie, VOICEROID2 (Akari Kosei) aus dem Programm zu entfernen Wie überprüfe ich die Benutzeroberfläche mit dem Inspect-Tool? [Windows 8 / Windows 8.1 Store App-Entwicklung]
** Gebraucht etc. ** python3 {tkinter, wave, pywinauto}
Verwenden Sie den tkinter von python3, um Eingabefelder, Senden-Schaltflächen und Zeichenbilder anzuzeigen. Wenn Sie die Senden-Taste drücken, wird der Text an die VOICEROID-Software gesendet. Speichern Sie ihn daher als Sprache. (Mit Pywinauto)
Wenn Sie sich das Programm mit Bezug auf das ansehen, was in Referenzartikel geschrieben steht, können Sie sehen, dass das Erhalten des Handles des Fensters der Schlüssel zu dieser Zeit ist. .. Um zu sehen, wie es funktioniert, verwenden wir ein Tool namens Inspect.exe, mit dem Sie sehen können, wie die Benutzeroberfläche funktioniert.
"-" Zeigt die untere Ebene an
Desktop
- "VOICEROID2"Fenster
-- ""Benutzerdefiniert
--- ""Taste
---- "Sprachspeicherung"Text
"-" Zeigt die untere Ebene an
Desktop
- "VOICEROID2"Fenster
-- "speichern als"Dialog
--- "sparen(S)"Taste
"-" Zeigt die untere Ebene an
Desktop
- "VOICEROID2"Fenster
-- "speichern als"Dialog
--- "speichern als"Dialog
----| "Ja(Y)"Taste
----| "Nein(N)"Taste
"-" Zeigt die untere Ebene an
Desktop
- "VOICEROID2"Fenster
-- "Sprachspeicherung"Fenster
--- "Information"Dialog
---- "OK"Taste
** Kokko ** ist am nervigsten und es erscheinen mehrere ähnliche Namen, so dass die Hierarchie seltsam wird. Es tut meinem Kopf weh, also lass uns ein Lied spielen oder Kaffee trinken.
Beim Voice2-Import verwendet talkVOICEROID2 Referenzartikel so wie es ist. Starten Sie VOICEROID2 im Voraus und führen Sie dann voiceroidtalk.py aus. Es gibt ein Bestätigungsfenster, wenn Sie von VOICEROID2 Voice Save zu "Save As" wechseln, diesmal jedoch auf "Vom nächsten Mal weglassen".
voiceroidtalk.py
import wave
import winsound as ws
import tkinter
import sys
import tkinter.messagebox as tkm
import time
from voice2 import talkVOICEROID2
from voiceroid2_1 import talkVOICEROID2_1
from voiceroid2_2 import talkVOICEROID2_2
from voiceroid2_3 import talkVOICEROID2_3
from voiceroid2_4 import talkVOICEROID2_4
import time
root=tkinter.Tk()
root.geometry("1920x1080")
root.title(u"aoi talk")
kotonoha=tkinter.PhotoImage(file="C:/Users/takumi/Desktop/voice/01.png ")
canvas=tkinter.Canvas(bg="white",width=475,height=750)
canvas.place(x=1300,y=250)
canvas.create_image(0,0, image=kotonoha, anchor=tkinter.NW)
def addlist(text):
mysay="you: "+ text
print(mysay)
listbox.insert(tkinter.END,mysay)
chat = "Aoi: " + talk(text)
#if 0<=int(text):
# aoivoice=int(text)
Entry1.delete(0, tkinter.END)
chatCut(chat)
#addRep(aoi)
def chatCut(chat):
aoi=chat
addRep(aoi)
def addRep(aoi):
listbox.insert(tkinter.END, aoi)
#Sprachverarbeitung
voiceroid=aoi[5:]
voiceroid=voiceroid+"Tsu"
word=len(voiceroid)
destime=round(word/7+0.1,1)
#destime=round(word/7+1.1,1)
#Wenn Sie auf dem Desktop nicht sprechen können, fügen Sie den folgenden Kommentar hinzu
#talkVOICEROID2(voiceroid)
#time.sleep(destime)
#-----------zzz
#Ändern Sie die Zeitverzögerungsverarbeitung gemäß den Spezifikationen
talkVOICEROID2_1(voiceroid)
time.sleep(0.3)
talkVOICEROID2_2(voiceroid)
time.sleep(0.2)
talkVOICEROID2_3(voiceroid)
time.sleep(0.2)
talkVOICEROID2_4(voiceroid)
def talk(say):
if say == 'end':
return ('wir sehen uns')
else:
return (say)
static=tkinter.Label(text=u"Sprich mit Aoi-chan!")
static.pack()
Entry1=tkinter.Entry(width=50)
Entry1.insert(tkinter.END,u"Hallo")
Entry1.pack()
button=tkinter.Button(text=u"Senden", width=50,command=lambda: addlist(Entry1.get()))
button.pack()
listbox=tkinter.Listbox(width=55,height=15)
listbox.pack()
root.mainloop()
Wenn Sie die Kraft haben, es einfacher zusammenzusetzen ...
voiceroid2_1.py
# -*- coding: utf-8 -*-
import pywinauto
def search_child_byclassname_1(class_name, uiaElementInfo, target_all = False):
target = []
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Übereinstimmung mit ClassName
if childElement.class_name == class_name:
if target_all == False:
return childElement
else:
target.append(childElement)
if target_all == False:
#Falsch wenn nicht
return False
else:
return target
def search_child_byname_1(name, uiaElementInfo):
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Namensübereinstimmung
if childElement.name == name:
return childElement
#Falsch wenn nicht
return False
def talkVOICEROID2_1(speakPhrase):
#Desktop-Elemente
parentUIAElement = pywinauto.uia_element_info.UIAElementInfo()
#Suche nach Voiceroid
voiceroid2 = search_child_byname_1("VOICEROID2",parentUIAElement)
# *Wenn beigefügt ist
if voiceroid2 == False:
voiceroid2 = search_child_byname_1("VOICEROID2*",parentUIAElement)
#Wechsel von hier
#Holen Sie sich ElementInfo des Textelements
TextEditViewEle = search_child_byclassname_1("TextEditView",voiceroid2)
textBoxEle = search_child_byclassname_1("TextBox",TextEditViewEle)
#Holen Sie sich die Kontrolle
textBoxEditControl = pywinauto.controls.uia_controls.EditWrapper(textBoxEle)
#Textregistrierung
textBoxEditControl.set_edit_text(speakPhrase)
#Schaltfläche "Get"
buttonsEle = search_child_byclassname_1("Button",TextEditViewEle,target_all = True)
#Suchen Sie die Wiedergabetaste
playButtonEle = ""
for buttonEle in buttonsEle:
#Suchen Sie nach Textblöcken
textBlockEle = search_child_byclassname_1("TextBlock",buttonEle)
if textBlockEle.name == "Sprachspeicherung":
playButtonEle = buttonEle
break
#Holen Sie sich die Tastensteuerung
playButtonControl = pywinauto.controls.uia_controls.ButtonWrapper(playButtonEle)
#Drücken Sie die Wiedergabetaste
playButtonControl.click()
voiceroid2_2.py
#Zweites Mal
# -*- coding: utf-8 -*-
import pywinauto
def search_child_byclassname_2(class_name, uiaElementInfo, target_all = False):
target = []
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Übereinstimmung mit ClassName
if childElement.class_name == class_name:
if target_all == False:
return childElement
else:
target.append(childElement)
if target_all == False:
#Falsch wenn nicht
return False
else:
return target
def search_child_byname_2(name, uiaElementInfo):
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Namensübereinstimmung
if childElement.name == name:
return childElement
#Falsch wenn nicht
return False
def talkVOICEROID2_2(speakPhrase):
#Desktop-Elemente
parentUIAElement = pywinauto.uia_element_info.UIAElementInfo()
#Suche nach Voiceroid
voiceroid2 = search_child_byname_2("VOICEROID2",parentUIAElement)
# *Wenn beigefügt ist
if voiceroid2 == False:
voiceroid2 = search_child_byname_2("VOICEROID2*",parentUIAElement)
#Wechsel von hier
#Speichern Sie als Get ElementInfo des Elements
saveEle = search_child_byclassname_2("#32770",voiceroid2)
playsaveEle = search_child_byclassname_2("Button",saveEle,target_all = False)
#Holen Sie sich die Tastensteuerung
playButtonControl = pywinauto.controls.uia_controls.ButtonWrapper(playsaveEle)
#Drücken Sie die Wiedergabetaste
playButtonControl.click()
voiceroid2_3.py
#Drittes Mal
# -*- coding: utf-8 -*-
import pywinauto
def search_child_byclassname_3(class_name, uiaElementInfo, target_all = False):
target = []
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Übereinstimmung mit ClassName
if childElement.class_name == class_name:
if target_all == False:
return childElement
else:
target.append(childElement)
if target_all == False:
#Falsch wenn nicht
return False
else:
return target
def search_child_byname_3(name, uiaElementInfo):
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Namensübereinstimmung
if childElement.name == name:
return childElement
#Falsch wenn nicht
return False
def talkVOICEROID2_3(speakPhrase):
#Desktop-Elemente
parentUIAElement = pywinauto.uia_element_info.UIAElementInfo()
#Suche nach Voiceroid
voiceroid2 = search_child_byname_3("VOICEROID2",parentUIAElement)
# *Wenn beigefügt ist
if voiceroid2 == False:
voiceroid2 = search_child_byname_3("VOICEROID2*",parentUIAElement)
#Wechsel von hier
#Rufen Sie die ElementInfo des Sicherungselements mit dem Vornamen ab
saveEle = search_child_byclassname_3("#32770",voiceroid2)
#Als zweiten Namen speichern(ja oder Nein)Holen Sie sich ElementInfo des Elements
resaveEle = search_child_byclassname_3("#32770",saveEle)
#Im Griff in der Sekunde aufbewahren(Holen Sie sich die Schaltfläche JA)
yessEle = search_child_byclassname_3("Button",resaveEle,target_all = True)
#Suchen Sie die Schaltfläche Ja
playyesEle = ""
for yesEle in yessEle:
#Das erste Argument ist das aktuelle Handle, das zweite Argument ist das vorherige Save-Handle
#Suchen Sie nach dem Namen Ja, wo Sie sind
a=search_child_byclassname_3("#32770",saveEle)
if yesEle.name=="Ja(Y)":
playyesEle=yesEle
break
#Holen Sie sich die Tastensteuerung
playButtonControl = pywinauto.controls.uia_controls.ButtonWrapper(playyesEle)
#Drücken Sie die Wiedergabetaste
playButtonControl.click()
voiceroid2_4.py
#4 ..
# -*- coding: utf-8 -*-
import pywinauto
def search_child_byclassname_4(class_name, uiaElementInfo, target_all = False):
target = []
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Übereinstimmung mit ClassName
if childElement.class_name == class_name:
if target_all == False:
return childElement
else:
target.append(childElement)
if target_all == False:
#Falsch wenn nicht
return False
else:
return target
def search_child_byname_4(name, uiaElementInfo):
#Durchsuchen Sie alle untergeordneten Elemente
for childElement in uiaElementInfo.children():
#Bestätigung der Namensübereinstimmung
if childElement.name == name:
return childElement
#Falsch wenn nicht
return False
def talkVOICEROID2_4(speakPhrase):
#Desktop-Elemente
parentUIAElement = pywinauto.uia_element_info.UIAElementInfo()
#Suche nach Voiceroid
voiceroid2 = search_child_byname_4("VOICEROID2",parentUIAElement)
# *Wenn beigefügt ist
if voiceroid2 == False:
voiceroid2 = search_child_byname_4("VOICEROID2*",parentUIAElement)
#Wechsel von hier
#Audio-Speicherfenster(Bestätigung speichern)Holen Sie sich ElementInfo des Elements
wavEle = search_child_byclassname_4("Window",voiceroid2)
#Holen Sie sich ElementInfo für das Info-Dialogelement
infoEle = search_child_byclassname_4("#32770",wavEle)
#JA Tastenerfassung
yessEle = search_child_byclassname_4("Button",infoEle,target_all = True)
#Suchen Sie die Schaltfläche Ja
playyesEle = ""
for yesEle in yessEle:
#Suchen Sie nach Textblöcken
w=search_child_byclassname_4("#32770",wavEle)
if yesEle.name=="OK":
playyesEle=yesEle
break
#Holen Sie sich die Tastensteuerung
playButtonControl = pywinauto.controls.uia_controls.ButtonWrapper(playyesEle)
#Drücken Sie die Wiedergabetaste
playButtonControl.click()
Ich konnte es sicher herausnehmen! !! Aoi Chan Kawaii Yatter (Müdigkeit) Nun, zu diesem Zeitpunkt können nur Leute, die VOICEROID2 haben, dies tun, aber ich würde dies gerne auf Webseiten tun können.