Der in Discord verwendete Chat-Lesebot ist vorübergehend unbrauchbar geworden, daher habe ich ihn vorübergehend erstellt. Ich habe es geschafft, indem ich einen Teil des Codes neu geschrieben habe, der sich auf [Erstellen eines Bots zum Auslesen von Discords Chat] bezieht (https://qiita.com/9610r/items/d04bd91d373d31d9c3f3).
Ich habe Bot-Erstellung und Umgebungskonstruktion durchgeführt, während ich mir Folgendes angesehen habe.
ffmpeg
platziert die entpackte Datei in C: \ open_jtalk \ bin
.
Vergessen Sie nicht die "Pfad" -Einstellung ...
Bitte schreiben Sie das Token jedes Bots in den Teil der unteren Zeile, der das Token ist, das beim Erstellen des Bots kopiert wurde.
read_bot.py
import discord
from discord.ext import commands
import asyncio
import os
import subprocess
import ffmpeg
from voice_generator import creat_WAV
client = commands.Bot(command_prefix='.')
voice_client = None
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
@client.command()
async def join(ctx):
print('#Holen Sie sich Voicechannel')
vc = ctx.author.voice.channel
print('#Verbindung zum Sprachkanal herstellen')
await vc.connect()
@client.command()
async def bye(ctx):
print('#Trennen')
await ctx.voice_client.disconnect()
@client.event
async def on_message(message):
msgclient = message.guild.voice_client
if message.content.startswith('.'):
pass
else:
if message.guild.voice_client:
print(message.content)
creat_WAV(message.content)
source = discord.FFmpegPCMAudio("output.wav")
message.guild.voice_client.play(source)
else:
pass
await client.process_commands(message)
client.run("Token beim Erstellen des Bots kopiert")
Es gibt verschiedene Kommentare im Pfad der Sprachdatei, aber wenn Sie den "Quellcode" von "Sample Script" in MMD Agent herunterladen, Sie können es in eine weibliche Stimme ändern. (Da sich im Verzeichnis "Voice / mei" der entpackten Datei eine "htsvoice-Datei" befindet, platzieren Sie das "mei-Verzeichnis" in derselben Hierarchie wie der Quellcode.)
voice_generator.py
import subprocess
import re
# remove_custom_emoji
#Die Piktogramm-ID wird nicht vorgelesen
def remove_custom_emoji(text):
pattern = r'<:[a-zA-Z0-9_]+:[0-9]+>' #Benutzerdefiniertes Piktogrammmuster
return re.sub(pattern,'',text) #Austauschprozess
# urlAbb
#Wird bei URL weggelassen
def urlAbb(text):
pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
return re.sub(pattern,'Tod des Weglassens der URL!',text) #Austauschprozess
# creat_WAV
# message.Schreiben Sie Inhalte in eine Textdatei
def creat_WAV(inputText):
# message.Schreiben Sie Inhalte in eine Textdatei
inputText = remove_custom_emoji(inputText) #Die Piktogramm-ID wird nicht vorgelesen
inputText = urlAbb(inputText) #Wird bei URL weggelassen
input_file = 'input.txt'
with open(input_file,'w',encoding='shift_jis') as file:
file.write(inputText)
command = 'C:/open_jtalk/bin/open_jtalk -x {x} -m {m} -r {r} -ow {ow} {input_file}'
#Wörterbuchpfad
x = 'C:/open_jtalk/bin/dic'
#Sprachdateipfad
m = 'C:/open_jtalk/bin/nitech_jp_atr503_m001.htsvoice'
#m = 'C:/open_jtalk/bin/mei/mei_sad.htsvoice'
#m = 'C:/open_jtalk/bin/mei/mei_angry.htsvoice'
#m = 'C:/open_jtalk/bin/mei/mei_bashful.htsvoice'
#m = 'C:/open_jtalk/bin/mei/mei_happy.htsvoice'
#m = 'C:/open_jtalk/bin/mei/mei_normal.htsvoice'
#Sprechgeschwindigkeit
r = '1.0'
#Name und Pfad der Ausgabedatei
ow = 'output.wav'
args= {'x':x, 'm':m, 'r':r, 'ow':ow, 'input_file':input_file}
cmd= command.format(**args)
print(cmd)
subprocess.run(cmd)
return True
if __name__ == '__main__':
creat_WAV('Prüfung')
Die Komposition ist so.
Bis zur Einladung des Bots gab es eine Beschreibung, die jedoch nicht über die Verwendung des Bots geschrieben wurde. Daher werde ich sie entsprechend schreiben.
Dann meldet sich der Bot an
Zuerst gebe ich die Stimme ein. (Dieser Bot kommt im Grunde bei der Person herein, die ihn angerufen hat Der aufzurufende Befehl lautet ".join"
Wenn Sie entsprechend chatten, wird es gelesen. Es werden keine Piktogramme oder benutzerdefinierten Piktogramme gelesen ... Außerdem versuche ich, die URL wegzulassen.
Der Befehl, den Bot vom Sprachkanal zu verlassen, lautet ".bye"
Die Eingabeaufforderung sollte "Strg + C" sein oder das Fenster schließen.
Ich bin der Meinung, dass auch einfaches Englisch in Alphabeten gelesen werden kann, daher möchte ich eine Wörterbuchregistrierungsfunktion hinzufügen.
Nun, es wird bald fertig sein. vielleicht
Recommended Posts