[PYTHON] Ich habe einen Discord-Chat-Lesebot erstellt, indem ich das Erscheinungsbild nachgeahmt habe

Einführung

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).

Vorbereitungen

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 ...

Bot-Quellcode

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")

Quellcode der Audiodatei

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')

Verzeichnisaufbau

Die Komposition ist so.

image.png

Wie benutzt man

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.

Eingabeaufforderung starten

タイトルなし.png

Ziehen Sie "read_bot.py" von C: \ open_jtalk \ bin auf die Eingabeaufforderung und geben Sie sie ein

タイトルなし2.png

Dann meldet sich der Bot an

タイトルなし3.png

Anruf zum Sprachkanal

Zuerst gebe ich die Stimme ein. (Dieser Bot kommt im Grunde bei der Person herein, die ihn angerufen hat Der aufzurufende Befehl lautet ".join"

タイトルなし4.png

Lass mich reden

Wenn Sie entsprechend chatten, wird es gelesen. Es werden keine Piktogramme oder benutzerdefinierten Piktogramme gelesen ... Außerdem versuche ich, die URL wegzulassen.

Evakuieren

Der Befehl, den Bot vom Sprachkanal zu verlassen, lautet ".bye"

タイトルなし5.png

Aufräumen

Die Eingabeaufforderung sollte "Strg + C" sein oder das Fenster schließen.

Ende

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

Ich habe einen Discord-Chat-Lesebot erstellt, indem ich das Erscheinungsbild nachgeahmt habe
Ich habe einen Zwietrachtbot gemacht
Als ich einen Discord Bot gemacht habe, haben meine Klassenkameraden meinen Computer zerstört
Ich habe einen Wikipedia Gacha Bot gemacht
Ich habe einen Twitter-Bot erstellt, der das von #PokemonGO gefangene Pokemon murmelt
Ich habe einen schlaffen Bot gemacht, der mich über die Temperatur informiert
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
〇✕ Ich habe ein Spiel gemacht
Lassen Sie uns Chat-Benutzerverwaltungstool gemacht
Erstellen Sie einen BOT, der die Discord-URL verkürzt
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
Ich habe einen Befehl zum Markieren des Tabellenclips gegeben
Fügen Sie eine Funktion hinzu, um dem Wetter heute mitzuteilen, dass der Bot locker ist (hergestellt von Python).
Ich habe versucht, eine Rangliste zu erstellen, indem ich das Mitgliederteam der Organisation abgekratzt habe
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 1)
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 2)
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Machen wir einen Discord Bot.
Machen Sie einen LINE BOT (Chat)
Ich habe einen Python-Text gemacht
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
[Python] Ich habe einen Line-Bot erstellt, der zufällig nach englischen Wörtern fragt
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Ich habe eine einfache Netzwerkkamera hergestellt, indem ich ESP32-CAM und RTSP kombiniert habe.
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Ich habe einen Twitter-Bot mit Go x Qiita API x Lambda erstellt
Ich habe versucht, ein Gerüstwerkzeug für Python Web Framework Bottle zu erstellen
Ich habe den Befehl gegeben, einen farbenfrohen Kalender im Terminal anzuzeigen
Ich habe ein Programm erstellt, das den Tierkreis mit tkinter automatisch berechnet
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Ich fand es heraus, indem ich ein Python-Skript erstellte, um Radiko aufzuzeichnen, während ich den Code der Vorgänger las
Da ich zu verschiedenen Zeiten anfing zu arbeiten, machte ich einen Bot, der mir die Zeit sagt, die Arbeit zu verlassen
Ich habe einen Bot erstellt, um ihn auf Twitter zu posten, indem ich mit AWS Lambda eine dynamische Site im Internet abgekratzt habe (Fortsetzung).
[Python] Ich habe einen Bot erstellt, der mir die aktuelle Temperatur anzeigt, wenn ich einen Ortsnamen in LINE eingebe
Ich habe eine C ++ - Lernseite erstellt
Ich habe einen Line-Bot mit Python gemacht!
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Ich habe mit Python eine Lotterie gemacht.
Ich habe ein CUI-basiertes Übersetzungsskript erstellt
Ich habe mit Python einen Daemon erstellt
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert
[Django] Erstellt ein Feld zur Eingabe von Daten mit 4-stelligen Zahlen
Ich habe einen Küchentimer erstellt, der in der Statusleiste angezeigt wird!
Ich habe ein Programm erstellt, um Sie per LINE zu benachrichtigen, wenn Schalter eintreffen
Ich habe einen einfachen Timer erstellt, der vom Terminal aus gestartet werden kann
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe einen Fehler beim Abrufen der Hierarchie mit MultiIndex von Pandas gemacht
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.