[PYTHON] Quand un amateur écoutait de la musique anti-phase, c'était déroutant et calme à visiter.

J'étais intéressé par la programmation de l'analyse vocale, mais je ne l'ai jamais écrite, alors je l'ai essayé.

Je suis un amateur, mais je sais ce qui suit, alors je voulais demander ce qui se passerait si la musique était déphasée.

Au début, je pensais l'écrire en Go, mais j'ai abandonné parce que je n'avais pas de bon paquet. ٩ (๑òωó๑) ۶ Je l'écrirai un jour

J'ai utilisé python parce qu'il y avait une bibliothèque appelée pydub qui contenait tout ce que je voulais faire. Comme prévu Python. Le système d'analyse est solide

Je l'ai vraiment écrit

Bang bang bang bang bang bang Bang bang bang bang Bang (∩` ・ ω ・) Bang Bang _ / _Mitsu /  ̄ ̄ ̄ /    \/___/ ̄ ̄

Préparation

#Il semble être utilisé dans pydub
brew install ffmpeg

pip install pydub

#Utilisé pour tracer la forme d'onde
pip install matplotlib

** Données utilisées ** Chopin: Valse n ° 6 dans Weird D Major Op.64-1 《Puppy Waltz》 http://classical-sound.seesaa.net/article/211557687.html Tout allait bien si c'était une chanson courte

Première chose que j'ai faite

Pour le moment, j'écoutais la musique anti-phase qui était le but initial.

from pydub import AudioSegment
from pydub.playback import play

#Load an audio file
myAudioFile = "test.mp3"
sound1 = AudioSegment.from_mp3(myAudioFile)

# Invert phase of audio file
sound2 = sound1.invert_phase()

# play audio data
play(sound2)

(゚ д ゚) Poker (écoutez maintenant ...)

\ (^ O ^) / ... Je ne comprends pas vraiment la différence! !! \ (^ O ^) / ... Peut-être que ce n'était pas bien écrit! ??

Je n'étais pas sûr, alors j'ai essayé de tracer la forme d'onde

from pydub import AudioSegment
from pydub.playback import play
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")

#Load an audio file
myAudioFile = "test.mp3"
sound1 = AudioSegment.from_mp3(myAudioFile)

plot audio data
data = np.array(sound1.get_array_of_samples())
x = data[::sound1.channels]
plt.plot(x[::100000])
plt.grid()
plt.show()

# Invert phase of audio file
sound2 = sound1.invert_phase()

plot audio data
data = np.array(sound2.get_array_of_samples())
xr = data[::sound2.channels]
plt.plot(xr[::100000])
plt.grid()
plt.show()

Données saisies Figure_1.png

Phase opposée Figure_2.png

Certes, la phase est inversée.

Est-ce vraiment déphasé?

Pourtant, j'étais inquiet, alors j'ai essayé de synthétiser des données musicales. S'il est vraiment déphasé, il devrait être silencieux si vous combinez les données musicales d'entrée avec les données déphasées! !!

from pydub import AudioSegment
from pydub.playback import play

#Load an audio file
myAudioFile = "test.mp3"
sound1 = AudioSegment.from_mp3(myAudioFile)

# Invert phase of audio file
sound2 = sound1.invert_phase()

#Merge two audio files
combined = sound1.overlay(sound2)

# play audio data
play(combined)

Oh, pas de son! !! Σ (゜ □ ゜)

Tracer le résultat après synthèse

Figure_3.png

Forme définitive

from pydub import AudioSegment
from pydub.playback import play
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")

#Load an audio file
myAudioFile = "test.mp3"
sound1 = AudioSegment.from_mp3(myAudioFile)

plot audio data
data = np.array(sound1.get_array_of_samples())
x = data[::sound1.channels]
plt.plot(x[::100000])
plt.grid()
plt.show()

# play
play(sound1)

# Invert phase of audio file
sound2 = sound1.invert_phase()

plot audio data
data = np.array(sound2.get_array_of_samples())
xr = data[::sound2.channels]
plt.plot(xr[::100000])
plt.grid()
plt.show()

# play audio data
play(sound2)

# Export merged audio file
sound2.export("invert_phase.mp3", format="mp3")

#Merge two audio files
combined = sound1.overlay(sound2)

data = np.array(combined.get_array_of_samples())
xr = data[::combined.channels]
plt.plot(xr[::100000])
plt.grid()
plt.show()

# play audio data
play(combined)

# #Export merged audio file
combined.export("combined.mp3", format="mp3")

Conclusion

C'est étrange, mais je ne pouvais pas faire la différence simplement en écoutant la musique anti-phase. Je vais étudier un peu plus et recommencer. Je pense que vous pouvez le reproduire en traçant l'article, donc si vous êtes intéressé, essayez-le

Recommended Posts

Quand un amateur écoutait de la musique anti-phase, c'était déroutant et calme à visiter.
Quand j'ai essayé d'installer PIL et matplotlib dans un environnement virtualenv, j'en étais accro.
Il était dangereux de spécifier un chemin relatif lors de la génération d'un lien symbolique
Notez que j'étais accro à la configuration de TensowFlow
J'ai été surpris de recevoir une belle critique lorsque j'ai écrit Python à CheckIO et son explication