[Raspi4; Introduction au son] Enregistrement stable de l'entrée sonore avec python ♪

J'ai couvert l'entrée audio plusieurs fois, mais cette fois j'ai pu entrer et sortir de manière stable même avec Rasipi4, alors j'ai décidé de le résumer. La chose importante est comme indiqué dans la référence 1. L'année dernière, je jouais avec quelque chose comme Reference 2. Je pense faire quelque chose d'un peu différent cette année. 【référence】 1.PyAudio Input overflowed 2. [Scipy] Joué avec la conversion FFT, STFT et ondelettes ♬ ~ ⑦ Spectrogramme en temps réel; Accélérer

Le point

En d'autres termes, si vous écrivez la magie suivante lors de la lecture, le débordement ne se produira pas et vous pourrez enregistrer à l'infini.

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

Enregistrez le son lu sous forme de fichier wav avec la fonction suivante.

def savewav(sig,sk):
    RATE = 44100 #Fréquence d'échantillonnage
    #Onde sinusoïdale-Convertir de 32768 à 32767 valeur entière(à 16 bits pcm signé)
    swav = [(int(32767*x)) for x in sig] #32767
    #Binaire
    binwave = struct.pack("h" * len(swav), *swav)
    #Exporter l'onde sinusoïdale sous forme de fichier wav
    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()

L'entrée et la sortie du son sont réglées sur True. Puisque la voix (phrase) est entrée, enregistrez une longue durée (102400/44100 = 2,3 s).

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) #Réglez l'entrée et la sortie sur True en même temps

Et enfin, l'enregistrement continu a commencé. Exception_on_overflow est défini sur False. sig est divisé par 32768.

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, euh, eh. .. Résultat de mesure en continu de Mémoire axe x; 44100 = 1sec sound_1.png sound_4.png

Résumé

・ Une mesure continue est désormais possible

・ Je souhaite associer R-python au son.

Recommended Posts

[Raspi4; Introduction au son] Enregistrement stable de l'entrée sonore avec python ♪
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
Système de notation IPynb réalisé avec TA d'introduction à la programmation (Python)
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
Introduction facile de la reconnaissance vocale avec Python
[Introduction à l'application Udemy Python3 +] 41. fonction d'entrée
[Introduction à Python] Utilisons foreach avec Python
[Introduction au Data Scientist] Bases de Python ♬
Introduction de Python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
Introduction à l'intelligence artificielle avec Python 1 «Théorie des algorithmes génétiques»
[Introduction à Udemy Python3 + Application] 26. Copie du dictionnaire
Markov Chain Artificial Brainless avec Python + Janome (1) Introduction à Janome
Chaîne de Markov artificielle sans cervelle avec Python + Janome (2) Introduction à la chaîne de Markov
Introduction à l'intelligence artificielle avec Python 2 «Pratique de l'algorithme génétique»
[Introduction à Udemy Python3 + Application] 19. Copie de la liste
Comment spécifier des attributs avec Mock of Python
Introduction à Python avec Atom (en route)
Introduction au modèle linéaire généralisé (GLM) par Python
[Introduction à l'application Udemy Python3 +] 9. Tout d'abord, imprimez avec print
[Introduction à Python] Utilisation de base des expressions lambda
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Introduction à OpenCV (python) - (2)
[Introduction à Python] Comment itérer avec la fonction range?
Discord Bot avec fonction d'enregistrement commençant par Python: (1) Introduction discord.py
Changer les paramètres IP en ACL de conoha avec python
Introduction au traitement parallèle distribué Python par Ray
Introduction aux mathématiques à partir du mémo d'étude Python Vol.1
Note de lecture: Introduction à l'analyse de données avec Python
[Introduction à Udemy Python3 + Application] 53. Dictionnaire des arguments de mots-clés
[Introduction à RasPi4] Construction de l'environnement; OpenCV / Tensorflow, entrée japonaise ♪
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
[Introduction à Udemy Python3 + Application] 52. Tapple d'arguments positionnels
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
[Introduction au son] Organisons l'introduction au son de python et de R ♬ -Écoutez le son de l'explosion de Nikkei 255-
J'ai essayé de trouver l'entropie de l'image avec python
Connectez-vous à BigQuery avec Python
Je souhaite spécifier une autre version de Python avec pyvenv
Introduction à Python Django (2) Win
Une collection de techniques professionnelles compétitives à résoudre avec Python
Connectez-vous à Wikipedia avec Python
Introduction à elle faite avec Python ~ Projet d'automatisation Tinder ~ Épisode 6
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Introduction à RDB avec sqlalchemy Ⅰ
[Python] Localisez la source sonore uniquement sur la voix humaine avec ReSpeaker
Introduction d'activités appliquant Python
20200329_Introduction à l'analyse de données avec Python 2nd Edition Personal Summary
Introduction à la communication série [Python]
Introduction à elle faite avec Python ~ Projet d'automatisation Tinder ~ Épisode 5
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Introduction à Python pour les utilisateurs de VBA - Appeler Python depuis Excel avec xlwings -
Basculer python vers 2.7 avec des alternatives