[Raspi4; Einführung in den Sound] Stabile Aufzeichnung der Toneingabe mit Python ♪

Ich habe die Soundeingabe mehrmals behandelt, aber dieses Mal konnte ich auch mit Rasipi4 stabil ein- und ausgeben, daher habe ich beschlossen, sie zusammenzufassen. Das Wichtigste ist, wie in Referenz 1 gezeigt. Letztes Jahr habe ich mit so etwas wie Referenz 2 gespielt. Ich denke darüber nach, dieses Jahr etwas anderes zu machen. 【Referenz】 1.PyAudio Input overflowed 2. [Scipy] Gespielt mit FFT-, STFT- und Wavelet-Konvertierung ♬ ~ ⑦ Echtzeitspektrogramm; Beschleunigung

Der Punkt

Mit anderen Worten, wenn Sie beim Lesen die folgende Magie schreiben, tritt kein Überlauf auf und Sie können endlos aufnehmen.

# -*- coding:utf-8 -*-
import pyaudio
import matplotlib.pyplot as plt
import numpy as np
import wave
import struct

Speichern Sie den gelesenen Sound als WAV-Datei mit der folgenden Funktion.

def savewav(sig,sk):
    RATE = 44100 #Abtastfrequenz
    #Sinus-Konvertieren Sie von 32768 in 32767 Integer-Wert(zu signierten 16bit pcm)
    swav = [(int(32767*x)) for x in sig] #32767
    #Binär
    binwave = struct.pack("h" * len(swav), *swav)
    #Sinuswelle als WAV-Datei exportieren
    w = wave.Wave_write("./wine/"+str(sk)+".wav")
    params = (1, 2, RATE, len(binwave), 'NONE', 'not compressed')
    w.setparams(params)
    w.writeframes(binwave)
    w.close()

Die Ein- und Ausgabe von Sound ist auf True eingestellt. Da Sprache (Satz) eingegeben wird, zeichnen Sie eine lange Zeit auf (102400/44100 = 2,3 Sekunden).

RATE=44100
p=pyaudio.PyAudio()
N=100
CHUNK=1024*N
stream=p.open(format = pyaudio.paInt16,
        channels = 1,
        rate = RATE,
        frames_per_buffer = CHUNK,
        input = True,
        output = True) #Setzen Sie Input und Output gleichzeitig auf True

Und schließlich hat die kontinuierliche Aufnahme begonnen. Exception_on_overflow ist auf False gesetzt. sig wird durch 32768 geteilt.

sk=0
while stream.is_active():
    input = stream.read(CHUNK, exception_on_overflow = False)
    print(len(input))
    sig =[]
    sig = np.frombuffer(input, dtype="int16") / 32768
    savewav(sig,sk)
    fig, (ax1,ax2) = plt.subplots(2,1,figsize=(1.6180 * 4, 4*2))
    lns1=ax1.plot(sig[0:1024] ,".-",color="red")
    ax1.set_xticks(np.linspace(0, 882, 3))
    ax1.set_ylabel("sig0")
    ax1.set_title('short plot')
    lns2=ax2.plot(sig[0:CHUNK], "-",color="blue")
    ax2.set_xticks(np.linspace(0, 44100*2, 5))
    ax2.set_ylabel("sig1")
    ax2.set_title('long plot')
    ax1.grid()
    ax2.grid()
    plt.pause(0.5)
    plt.savefig("./wine/sound_{}.png ".format(sk))
    plt.close()
    sk+=1
    output = stream.write(input)

Ah, äh, wie. .. Kontinuierliches Messergebnis von x-Achsenspeicher; 44100 = 1 Sek sound_1.png sound_4.png

Zusammenfassung

・ Kontinuierliche Messung ist jetzt möglich

・ Ich möchte R-Python mit Sound verknüpfen.

Recommended Posts

[Raspi4; Einführung in den Sound] Stabile Aufzeichnung der Toneingabe mit Python ♪
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
IPynb-Bewertungssystem mit TA von Introduction to Programming (Python)
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
Einfache Einführung der Spracherkennung mit Python
[Einführung in die Udemy Python3 + -Anwendung] 41. Eingabefunktion
[Einführung in Python] Verwenden wir foreach mit Python
[Einführung in Data Scientist] Grundlagen von Python ♬
Einführung von Python
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Einführung in die künstliche Intelligenz mit Python 1 "Genetic Algorithm-Theory-"
[Einführung in die Udemy Python3 + -Anwendung] 26. Kopie des Wörterbuchs
Markov Chain Artificial Brainless mit Python + Janome (1) Einführung in Janome
Markov-Kette Künstlich Gehirnlos mit Python + Janome (2) Einführung in die Markov-Kette
Einführung in die künstliche Intelligenz mit Python 2 "Genetic Algorithm-Practice-"
[Einführung in die Udemy Python3 + -Anwendung] 19. Kopie der Liste
So legen Sie Attribute mit Mock of Python fest
Einführung in Python mit Atom (unterwegs)
Einführung in das Generalized Linear Model (GLM) von Python
[Einführung in die Udemy Python3 + -Anwendung] 9. Drucken Sie zunächst mit print
[Einführung in Python] Grundlegende Verwendung von Lambda-Ausdrücken
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Einführung in OpenCV (Python) - (2)
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Discord Bot mit Aufnahmefunktion beginnend mit Python: (1) Einführung discord.py
Ändern Sie die IP-Einstellungen mit Python in ACL von conoha
Einführung in die verteilte Parallelverarbeitung von Python durch Ray
Einführung in die Mathematik ab Python Study Memo Vol.1
Lesehinweis: Einführung in die Datenanalyse mit Python
[Einführung in Udemy Python3 + Application] 53. Wörterbuch der Schlüsselwortargumente
[Einführung in RasPi4] Umgebungskonstruktion; OpenCV / Tensorflow, japanische Eingabe ♪
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
[Einführung in Udemy Python3 + Application] 52. Tapple von Positionsargumenten
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
[Einführung in den Klang] Lassen Sie uns die Einführung in den Klang von Python und R arrange arrangieren. Hören Sie sich den Klang der Explosion von Nikkei 255 an.
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Stellen Sie mit Python eine Verbindung zu BigQuery her
Ich möchte eine andere Version von Python mit pyvenv angeben
Einführung in Python Django (2) Win
Eine Sammlung wettbewerbsfähiger Pro-Techniken, die mit Python gelöst werden können
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Einführung in sie gemacht mit Python ~ Tinder Automatisierungsprojekt ~ Episode 6
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
Einführung in RDB mit sqlalchemy Ⅰ
[Python] Lokalisieren Sie die Tonquelle mit ReSpeaker nur für die menschliche Stimme
Einführung in Aktivitäten mit Python
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
Einführung in die serielle Kommunikation [Python]
Einführung in sie gemacht mit Python ~ Tinder Automatisierungsprojekt ~ Episode 5
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Einführung in Python für VBA-Benutzer - Aufrufen von Python aus Excel mit xlwings-
Schalten Sie Python mit Alternativen auf 2.7 um