Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen

Prämisse / Was Sie erreichen wollen

Ich möchte einen Sprachwechsler mit Python und SPTK erstellen.

Ich habe auf die folgende Seite verwiesen. Der Quellcode wird grundsätzlich so verwendet, wie er ist, ohne neu geschrieben zu werden.

Probleme / Fehlermeldungen, die auftreten


*** Now recording ... (10 sec)
*** extract pitch ...
*** extract mel cepstrum
*** modify parameters ...
'x2x' �́A�����R�}���h�܂��͊O���R�}���h�A
����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
'x2x' �́A�����R�}���h�܂��͊O���R�}���h�A
����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
'sopr' �́A�����R�}���h�܂��͊O���R�}���h�A
����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
*** play!
'sopr' �́A�����R�}���h�܂��͊O���R�}���h�A
����”\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
Traceback (most recent call last):
  File "C:/Users/joho-2/PycharmProjects/R sound 10/R sound 10.py", line 127, in <module>
    play("output.raw")
  File "C:/Users/joho-2/PycharmProjects/R sound 10/R sound 10.py", line 78, in play
    f = open(raw_file, "rb")
IOError: [Errno 2] No such file or directory: 'output.raw'

Entsprechender Quellcode

#coding: utf-8
import pyaudio
import struct
import subprocess

#Einfacher Sprachwechsler mit SPTK

CHANNELS = 1
RATE = 16000
CHUNK = 1024

def record(raw_file, record_seconds=5):
    """Nehmen Sie eine Audiodatei auf
Die Aufnahmezeit ist festgelegt. Ich konnte die Schleife nicht beenden, als ich die Tastatur drückte ..."""
    fp = open(raw_file, "wb")
    for _ in range(0, int(RATE / CHUNK * record_seconds)):
        data = stream.read(CHUNK)
        fp.write(struct.pack('s' * CHUNK * 2, *data))
    fp.close()
    stream.stop_stream()
    stream.close()
    p.terminate()

def extract_pitch(raw_file, pitch_file):
    """Extraktion von Tonhöhenparametern"""
    cmd = "x2x +sf %s | pitch -a 1 -s 16 -p 80 > %s" % (raw_file, pitch_file)
    subprocess.call(cmd, shell=True)

def extract_mcep(raw_file, mcep_file):
    """Extraktion von Mercepstram-Parametern"""
    cmd = "x2x +sf %s | frame -p 80 | window | mcep -m 25 -a 0.42 > %s" % (raw_file, mcep_file)
    subprocess.call(cmd, shell=True)

def modify_pitch(m, pitch_file, mcep_file, raw_file):
    """Verformt und synthetisiert die Tonhöhe neu
m ist größer als 1=>Tiefe Stimme
m ist kleiner als 1=>Hohe Stimme"""
    cmd = "sopr -m %f %s | excite -p 80 | mlsadf -m 25 -a 0.42 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (m, pitch_file, mcep_file, raw_file)
    subprocess.call(cmd, shell=True)

def modify_speed(frame_shift, pitch_file, mcep_file, raw_file):
    """Resynthetisieren Sie, indem Sie die Sprechgeschwindigkeit ändern
    frame_Verschiebung ist klein=>Schnelles Gespräch
    frame_Die Verschiebung ist groß=>langsam"""
    cmd = "excite -p %f %s | mlsadf -m 25 -a 0.42 -p %f %s | clip -y -32000 32000 | x2x +fs > %s" % (frame_shift, pitch_file, frame_shift, mcep_file, raw_file)
    subprocess.call(cmd, shell=True)

def hoarse_voice(pitch_file, mcep_file, raw_file):
    """Flüstern"""
    modify_pitch(0, pitch_file, mcep_file, raw_file)

def robot_voice(frame_period, record_seconds, mcep_file, raw_file):
    """Roboterstimme
    frame_Zeitraum ist klein=>Niedrig
    frame_Zeitraum ist groß=>hoch"""
    sequence_length = record_seconds * RATE * frame_period
    cmd = "train -p %d -l %d | mlsadf -m 25 -a 0.42 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (frame_period, sequence_length, mcep_file, raw_file)
    subprocess.call(cmd, shell=True)

def child_voice(pitch_file, mcep_file, raw_file):
    """Kinderstimme"""
    cmd = "sopr -m 0.4 %s | excite -p 80 | mlsadf -m 25 -a 0.1 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (pitch_file, mcep_file, raw_file)
    subprocess.call(cmd, shell=True)

def deep_voice(pitch_file, mcep_file, raw_file):
    """Dicke Stimme"""
    cmd = "sopr -m 2.0 %s | excite -p 80 | mlsadf -m 25 -a 0.6 -p 80 %s | clip -y -32000 32000 | x2x +fs > %s" % (pitch_file, mcep_file, raw_file)
    subprocess.call(cmd, shell=True)

def raw2wav(raw_file, wav_file):
    cmd = "sox -e signed-integer -c %d -b 16 -r %d %s %s" % (CHANNELS, RATE, raw_file, wav_file)
    subprocess.call(cmd, shell=True)

def play(raw_file):
    """Rohdatei abspielen"""
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(2), channels=CHANNELS, rate=RATE, output=True)
    f = open(raw_file, "rb")
    data = f.read(CHUNK)
    while data != '':
        stream.write(data)
        data = f.read(CHUNK)
    stream.stop_stream()
    stream.close()
    p.terminate()

if __name__ == "__main__":
    #Aufnahmezeit (fest)
    record_seconds = 10

    p = pyaudio.PyAudio()
    stream = p.open(format=pyaudio.paInt16,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)

    pitch_file = "temp.pitch"
    mcep_file = "temp.mcep"
    raw_file = "temp.raw"
    output_file = "output.raw"

    #Nehmen Sie das Original-Audio auf und exportieren Sie es als Rohdatei
    print "*** Now recording ... (%d sec)" % record_seconds
    record(raw_file, record_seconds)

    #Parameterextraktion
    print "*** extract pitch ..."
    extract_pitch(raw_file, pitch_file)

    print "*** extract mel cepstrum"
    extract_mcep(raw_file, mcep_file)

    #Verschiedene Parametertransformationen
    print "*** modify parameters ..."

    #Es kann nur eine aktiviert werden
    modify_pitch(0.3, pitch_file, mcep_file, output_file)
#    modify_speed(300, pitch_file, mcep_file, output_file)
#    hoarse_voice(pitch_file, mcep_file, output_file)
#    robot_voice(100, record_seconds, mcep_file, output_file)
#    child_voice(pitch_file, mcep_file, output_file)
    deep_voice(pitch_file, mcep_file, output_file)

    #Spielen Sie das konvertierte Audio ab
    print "*** play!"
    play("output.raw")

Was ich versucht habe

Ich dachte, es sei ein Problem mit der Python-Version, also habe ich von 3 auf 2 gewechselt, aber es hat nicht funktioniert ... Ich dachte, ich könnte überhaupt nicht aufnehmen, also habe ich die Seite viele Male überprüft und studiert. Der Fehler ist von hier nicht verschwunden und hat einfach nicht funktioniert ;;

Ergänzende Informationen (FW / Werkzeugversion etc.)

Ich bin ein Anfänger, der gerade Python studiert hat. Ich würde mich sehr freuen, wenn Sie mir einen Rat geben könnten. Vielen Dank.

Recommended Posts

Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen
Ich möchte ein Spiel mit Python machen
Ich möchte eine Webanwendung mit React und Python Flask erstellen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich möchte mit Python in eine Datei schreiben
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte einen Quantencomputer mit Python betreiben
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich möchte mit Python debuggen
[1 Stunde Herausforderung] Ich habe versucht, eine Wahrsagerseite zu erstellen, die für Python zu geeignet ist
Ich möchte eine Karaoke-Klangquelle erstellen, indem ich Instrumente und Gesang mit Python trenne
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Fraktal zum Erstellen und Spielen mit Python
Ich möchte eine Python-Umgebung erstellen
Lassen Sie uns mit Python langsam sprechen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte MATLAB feval mit Python verwenden
Ich möchte mit Python ein Fenster erstellen
Ich möchte mit Python eine E-Mail von Google Mail senden.
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte APG4b mit Python lösen (Kapitel 2)
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Ich möchte ein Programm ausführen und verteilen, das die Größe von Bildern in Python3 + Pyinstaller ändert
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen