Showing
23 changed files
with
674 additions
and
0 deletions
2018-08-13_Untitled.mp4
0 → 100644
This file is too large to display.
FFT연습/FFT.ipynb
0 → 100644
This diff is collapsed. Click to expand it.
FFT연습/FFT_for_analyize_data.ipynb
0 → 100644
This diff is collapsed. Click to expand it.
FFT연습/FFT_readfrom_WAV.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 3, | ||
| 6 | + "metadata": {}, | ||
| 7 | + "outputs": [], | ||
| 8 | + "source": [ | ||
| 9 | + "import matplotlib.pyplot as plt\n", | ||
| 10 | + "from scipy.fftpack import fft\n", | ||
| 11 | + "from scipy.io import wavfile # get the api" | ||
| 12 | + ] | ||
| 13 | + }, | ||
| 14 | + { | ||
| 15 | + "cell_type": "code", | ||
| 16 | + "execution_count": 4, | ||
| 17 | + "metadata": { | ||
| 18 | + "scrolled": false | ||
| 19 | + }, | ||
| 20 | + "outputs": [ | ||
| 21 | + { | ||
| 22 | + "ename": "TypeError", | ||
| 23 | + "evalue": "'numpy.int16' object is not iterable", | ||
| 24 | + "output_type": "error", | ||
| 25 | + "traceback": [ | ||
| 26 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | ||
| 27 | + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", | ||
| 28 | + "\u001b[0;32m<ipython-input-4-c176e6e452f3>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mfs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwavfile\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'1.wav'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# load the data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# this is a two channel soundtrack, I get the first track\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mele\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m8.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mele\u001b[0m \u001b[0;32min\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# this is 8-bit track, b is now normalized on [-1,1)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfft\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# calculate fourier transform (complex numbers list)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0md\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# you only need half of the fft list (real signal symmetry)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | ||
| 29 | + "\u001b[0;31mTypeError\u001b[0m: 'numpy.int16' object is not iterable" | ||
| 30 | + ] | ||
| 31 | + } | ||
| 32 | + ], | ||
| 33 | + "source": [ | ||
| 34 | + "fs, data = wavfile.read('1.wav') # load the data\n", | ||
| 35 | + "a = data.T[0] # this is a two channel soundtrack, I get the first track\n", | ||
| 36 | + "b=[(ele/2**8.)*2-1 for ele in a] # this is 8-bit track, b is now normalized on [-1,1)\n", | ||
| 37 | + "c = fft(b) # calculate fourier transform (complex numbers list)\n", | ||
| 38 | + "d = int(len(c)/2) # you only need half of the fft list (real signal symmetry)\n", | ||
| 39 | + "plt.plot(abs(c[:(d-1)]),'r') \n", | ||
| 40 | + "plt.show()" | ||
| 41 | + ] | ||
| 42 | + }, | ||
| 43 | + { | ||
| 44 | + "cell_type": "code", | ||
| 45 | + "execution_count": 16, | ||
| 46 | + "metadata": {}, | ||
| 47 | + "outputs": [], | ||
| 48 | + "source": [ | ||
| 49 | + "#wav파일 프린트 할줄알아야함 \n", | ||
| 50 | + "#(채널 : 모노라면 1, 스테레오라면 2\n", | ||
| 51 | + "\n" | ||
| 52 | + ] | ||
| 53 | + }, | ||
| 54 | + { | ||
| 55 | + "cell_type": "code", | ||
| 56 | + "execution_count": null, | ||
| 57 | + "metadata": {}, | ||
| 58 | + "outputs": [], | ||
| 59 | + "source": [] | ||
| 60 | + } | ||
| 61 | + ], | ||
| 62 | + "metadata": { | ||
| 63 | + "kernelspec": { | ||
| 64 | + "display_name": "Python 3", | ||
| 65 | + "language": "python", | ||
| 66 | + "name": "python3" | ||
| 67 | + }, | ||
| 68 | + "language_info": { | ||
| 69 | + "codemirror_mode": { | ||
| 70 | + "name": "ipython", | ||
| 71 | + "version": 3 | ||
| 72 | + }, | ||
| 73 | + "file_extension": ".py", | ||
| 74 | + "mimetype": "text/x-python", | ||
| 75 | + "name": "python", | ||
| 76 | + "nbconvert_exporter": "python", | ||
| 77 | + "pygments_lexer": "ipython3", | ||
| 78 | + "version": "3.6.5" | ||
| 79 | + } | ||
| 80 | + }, | ||
| 81 | + "nbformat": 4, | ||
| 82 | + "nbformat_minor": 2 | ||
| 83 | +} |
FFT연습/FFT_wavefile_temp1.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 2, | ||
| 6 | + "metadata": {}, | ||
| 7 | + "outputs": [], | ||
| 8 | + "source": [ | ||
| 9 | + "import math\n", | ||
| 10 | + "import wave\n", | ||
| 11 | + "import sys\n", | ||
| 12 | + "import struct\n" | ||
| 13 | + ] | ||
| 14 | + }, | ||
| 15 | + { | ||
| 16 | + "cell_type": "code", | ||
| 17 | + "execution_count": 3, | ||
| 18 | + "metadata": {}, | ||
| 19 | + "outputs": [ | ||
| 20 | + { | ||
| 21 | + "ename": "ValueError", | ||
| 22 | + "evalue": "invalid literal for int() with base 10: '/run/user/1000/jupyter/kernel-6454a929-4509-4b51-949d-f1c910f7ce09.json'", | ||
| 23 | + "output_type": "error", | ||
| 24 | + "traceback": [ | ||
| 25 | + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | ||
| 26 | + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", | ||
| 27 | + "\u001b[0;32m<ipython-input-3-cc8beb2556b6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0msample_rate\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetframerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mtotal_num_samps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetnframes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mfft_length\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mnum_fft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mtotal_num_samps\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mfft_length\u001b[0m \u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | ||
| 28 | + "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: '/run/user/1000/jupyter/kernel-6454a929-4509-4b51-949d-f1c910f7ce09.json'" | ||
| 29 | + ] | ||
| 30 | + } | ||
| 31 | + ], | ||
| 32 | + "source": [ | ||
| 33 | + "# 웨이브 파일을 열어라\n", | ||
| 34 | + "fp = wave.open('birdsound.wav',\"rb\")\n", | ||
| 35 | + "sample_rate = fp.getframerate()\n", | ||
| 36 | + "total_num_samps = fp.getnframes()\n", | ||
| 37 | + "fft_length = int(sys.argv[2])\n", | ||
| 38 | + "num_fft = (total_num_samps / fft_length ) - 2" | ||
| 39 | + ] | ||
| 40 | + }, | ||
| 41 | + { | ||
| 42 | + "cell_type": "code", | ||
| 43 | + "execution_count": null, | ||
| 44 | + "metadata": {}, | ||
| 45 | + "outputs": [], | ||
| 46 | + "source": [ | ||
| 47 | + "# 임시로 사용할 작업 배열을 만들어라\n", | ||
| 48 | + "temp = zeros((num_fft,fft_length),Float)" | ||
| 49 | + ] | ||
| 50 | + }, | ||
| 51 | + { | ||
| 52 | + "cell_type": "code", | ||
| 53 | + "execution_count": null, | ||
| 54 | + "metadata": {}, | ||
| 55 | + "outputs": [], | ||
| 56 | + "source": [ | ||
| 57 | + "# 파일로부터 데이터를 읽어 들여라\n", | ||
| 58 | + "for i in range(num_fft):\n", | ||
| 59 | + " tempb = fp.readframes(fft_length);\n", | ||
| 60 | + " temp[i,:] = array(struct.unpack(\"%dB\"%(fft_length), \\\n", | ||
| 61 | + " tempb),Float) - 128.0\n", | ||
| 62 | + "fp.close()" | ||
| 63 | + ] | ||
| 64 | + }, | ||
| 65 | + { | ||
| 66 | + "cell_type": "code", | ||
| 67 | + "execution_count": null, | ||
| 68 | + "metadata": {}, | ||
| 69 | + "outputs": [], | ||
| 70 | + "source": [ | ||
| 71 | + "# 데이터를 창틀화하라\n", | ||
| 72 | + "temp = temp * hamming(fft_length)\n", | ||
| 73 | + "\n", | ||
| 74 | + "# FFT를 사용하여 변환하라, 파워를 반환하라\n", | ||
| 75 | + "freq_pwr = 10*log10(1e-20+abs(real_fft(temp,fft_length))" | ||
| 76 | + ] | ||
| 77 | + }, | ||
| 78 | + { | ||
| 79 | + "cell_type": "code", | ||
| 80 | + "execution_count": null, | ||
| 81 | + "metadata": {}, | ||
| 82 | + "outputs": [], | ||
| 83 | + "source": [ | ||
| 84 | + "# 결과를 도표하라\n", | ||
| 85 | + "n_out_pts = (fft_length / 2) + 1\n", | ||
| 86 | + "y_axis = 0.5*float(sample_rate) / n_out_pts * \\\n", | ||
| 87 | + " arange(n_out_pts)\n", | ||
| 88 | + "x_axis = (total_num_samps / float(sample_rate)) / \\\n", | ||
| 89 | + " num_fft * arange(num_fft)\n", | ||
| 90 | + "setvar(\"X\",\"Time (sec)\")\n", | ||
| 91 | + "setvar(\"Y\",\"Frequency (Hertz)\")\n", | ||
| 92 | + "conshade(freq_pwr,x_axis,y_axis)\n", | ||
| 93 | + "disfin()" | ||
| 94 | + ] | ||
| 95 | + } | ||
| 96 | + ], | ||
| 97 | + "metadata": { | ||
| 98 | + "kernelspec": { | ||
| 99 | + "display_name": "Python 3", | ||
| 100 | + "language": "python", | ||
| 101 | + "name": "python3" | ||
| 102 | + }, | ||
| 103 | + "language_info": { | ||
| 104 | + "codemirror_mode": { | ||
| 105 | + "name": "ipython", | ||
| 106 | + "version": 3 | ||
| 107 | + }, | ||
| 108 | + "file_extension": ".py", | ||
| 109 | + "mimetype": "text/x-python", | ||
| 110 | + "name": "python", | ||
| 111 | + "nbconvert_exporter": "python", | ||
| 112 | + "pygments_lexer": "ipython3", | ||
| 113 | + "version": "3.6.5" | ||
| 114 | + } | ||
| 115 | + }, | ||
| 116 | + "nbformat": 4, | ||
| 117 | + "nbformat_minor": 2 | ||
| 118 | +} |
FFT연습/Kaggle_sound_tutorial.ipynb
0 → 100644
This diff could not be displayed because it is too large.
FFT연습/Realtime_saveWAV.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 2, | ||
| 6 | + "metadata": {}, | ||
| 7 | + "outputs": [], | ||
| 8 | + "source": [ | ||
| 9 | + "import wave\n", | ||
| 10 | + "import pyaudio" | ||
| 11 | + ] | ||
| 12 | + }, | ||
| 13 | + { | ||
| 14 | + "cell_type": "code", | ||
| 15 | + "execution_count": 3, | ||
| 16 | + "metadata": {}, | ||
| 17 | + "outputs": [], | ||
| 18 | + "source": [ | ||
| 19 | + "def play_file(fname):\n", | ||
| 20 | + " #오디오 객체 생성\n", | ||
| 21 | + " wf = wave.open('output.wav','rb') # wave파일 할당해준 객체\n", | ||
| 22 | + " p = pyaudio.PyAudio() #파이오디오 할당해준 객체\n", | ||
| 23 | + " chunk = 1024\n", | ||
| 24 | + " \n", | ||
| 25 | + " #stream = pyaudio로 open 하는것\n", | ||
| 26 | + " stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),\n", | ||
| 27 | + " channels=wf.getnchannels(),\n", | ||
| 28 | + " rate=wf.getframerate(),\n", | ||
| 29 | + " output=True)\n", | ||
| 30 | + " \n", | ||
| 31 | + " #데이터 wav파일에서 읽기\n", | ||
| 32 | + " data = wf.readframes(chunk)\n", | ||
| 33 | + " \n", | ||
| 34 | + " #읽은 데이터 있는동안 \n", | ||
| 35 | + " while data !='':\n", | ||
| 36 | + " stream.write(data) #스트림에 데이터 쓰기 \n", | ||
| 37 | + " data = wf.readframes(chunk) #데이터 wav파일에서 다시읽기\n", | ||
| 38 | + " \n", | ||
| 39 | + " #객체 닫아주기\n", | ||
| 40 | + " stream.close()\n", | ||
| 41 | + " p.terminate()\n", | ||
| 42 | + " " | ||
| 43 | + ] | ||
| 44 | + }, | ||
| 45 | + { | ||
| 46 | + "cell_type": "code", | ||
| 47 | + "execution_count": null, | ||
| 48 | + "metadata": {}, | ||
| 49 | + "outputs": [], | ||
| 50 | + "source": [ | ||
| 51 | + "play_file('output.wav')" | ||
| 52 | + ] | ||
| 53 | + }, | ||
| 54 | + { | ||
| 55 | + "cell_type": "code", | ||
| 56 | + "execution_count": null, | ||
| 57 | + "metadata": {}, | ||
| 58 | + "outputs": [], | ||
| 59 | + "source": [] | ||
| 60 | + } | ||
| 61 | + ], | ||
| 62 | + "metadata": { | ||
| 63 | + "kernelspec": { | ||
| 64 | + "display_name": "Python 3", | ||
| 65 | + "language": "python", | ||
| 66 | + "name": "python3" | ||
| 67 | + }, | ||
| 68 | + "language_info": { | ||
| 69 | + "codemirror_mode": { | ||
| 70 | + "name": "ipython", | ||
| 71 | + "version": 3 | ||
| 72 | + }, | ||
| 73 | + "file_extension": ".py", | ||
| 74 | + "mimetype": "text/x-python", | ||
| 75 | + "name": "python", | ||
| 76 | + "nbconvert_exporter": "python", | ||
| 77 | + "pygments_lexer": "ipython3", | ||
| 78 | + "version": "3.6.5" | ||
| 79 | + } | ||
| 80 | + }, | ||
| 81 | + "nbformat": 4, | ||
| 82 | + "nbformat_minor": 2 | ||
| 83 | +} |
FFT연습/fft연습.ipynb
0 → 100644
This diff is collapsed. Click to expand it.
FFT연습/realtime FFT.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 1, | ||
| 6 | + "metadata": {}, | ||
| 7 | + "outputs": [], | ||
| 8 | + "source": [ | ||
| 9 | + " import numpy as np\n", | ||
| 10 | + " import pylab\n", | ||
| 11 | + " import matplotlib.pyplot as plt\n", | ||
| 12 | + " from scipy.io import wavfile\n", | ||
| 13 | + " import time\n", | ||
| 14 | + " import sys\n", | ||
| 15 | + " import seaborn as sns\n", | ||
| 16 | + " import pyaudio" | ||
| 17 | + ] | ||
| 18 | + }, | ||
| 19 | + { | ||
| 20 | + "cell_type": "code", | ||
| 21 | + "execution_count": null, | ||
| 22 | + "metadata": {}, | ||
| 23 | + "outputs": [], | ||
| 24 | + "source": [ | ||
| 25 | + "\n", | ||
| 26 | + "i=0\n", | ||
| 27 | + "f,ax = plt.subplots(2)\n", | ||
| 28 | + "\n", | ||
| 29 | + "# Prepare the Plotting Environment with random starting values\n", | ||
| 30 | + "x = np.arange(10000)\n", | ||
| 31 | + "y = np.random.randn(10000)\n", | ||
| 32 | + "\n", | ||
| 33 | + "# Plot 0 is for raw audio data\n", | ||
| 34 | + "li, = ax[0].plot(x, y)\n", | ||
| 35 | + "ax[0].set_xlim(0,1000)\n", | ||
| 36 | + "ax[0].set_ylim(-5000,5000)\n", | ||
| 37 | + "ax[0].set_title(\"Raw Audio Signal\")\n", | ||
| 38 | + "# Plot 1 is for the FFT of the audio\n", | ||
| 39 | + "li2, = ax[1].plot(x, y)\n", | ||
| 40 | + "ax[1].set_xlim(0,5000)\n", | ||
| 41 | + "ax[1].set_ylim(-100,100)\n", | ||
| 42 | + "ax[1].set_title(\"Fast Fourier Transform\")\n", | ||
| 43 | + "# Show the plot, but without blocking updates\n", | ||
| 44 | + "plt.pause(0.01)\n", | ||
| 45 | + "plt.tight_layout()\n" | ||
| 46 | + ] | ||
| 47 | + }, | ||
| 48 | + { | ||
| 49 | + "cell_type": "code", | ||
| 50 | + "execution_count": null, | ||
| 51 | + "metadata": {}, | ||
| 52 | + "outputs": [], | ||
| 53 | + "source": [ | ||
| 54 | + "\n", | ||
| 55 | + "FORMAT = pyaudio.paInt16 # We use 16bit format per sample\n", | ||
| 56 | + "CHANNELS = 1\n", | ||
| 57 | + "RATE = 44100\n", | ||
| 58 | + "CHUNK = 1024 # 1024bytes of data red from a buffer\n", | ||
| 59 | + "RECORD_SECONDS = 0.1\n", | ||
| 60 | + "WAVE_OUTPUT_FILENAME = \"file.wav\"\n", | ||
| 61 | + "\n", | ||
| 62 | + "audio = pyaudio.PyAudio()\n", | ||
| 63 | + "\n", | ||
| 64 | + "# start Recording\n", | ||
| 65 | + "stream = audio.open(format=FORMAT,\n", | ||
| 66 | + " channels=CHANNELS,\n", | ||
| 67 | + " rate=RATE,\n", | ||
| 68 | + " input=True)#,\n", | ||
| 69 | + " #frames_per_buffer=CHUNK)\n", | ||
| 70 | + "\n", | ||
| 71 | + "global keep_going\n", | ||
| 72 | + "keep_going = True\n", | ||
| 73 | + "\n", | ||
| 74 | + "def plot_data(in_data):\n", | ||
| 75 | + " # get and convert the data to float\n", | ||
| 76 | + " audio_data = np.fromstring(in_data, np.int16)\n", | ||
| 77 | + " # Fast Fourier Transform, 10*log10(abs) is to scale it to dB\n", | ||
| 78 | + " # and make sure it's not imaginary\n", | ||
| 79 | + " dfft = 10.*np.log10(abs(np.fft.rfft(audio_data)))\n", | ||
| 80 | + "\n", | ||
| 81 | + " # Force the new data into the plot, but without redrawing axes.\n", | ||
| 82 | + " # If uses plt.draw(), axes are re-drawn every time\n", | ||
| 83 | + " #print audio_data[0:10]\n", | ||
| 84 | + " #print dfft[0:10]\n", | ||
| 85 | + " #print\n", | ||
| 86 | + " li.set_xdata(np.arange(len(audio_data)))\n", | ||
| 87 | + " li.set_ydata(audio_data)\n", | ||
| 88 | + " li2.set_xdata(np.arange(len(dfft))*10.)\n", | ||
| 89 | + " li2.set_ydata(dfft)\n", | ||
| 90 | + "\n", | ||
| 91 | + " # Show the updated plot, but without blocking\n", | ||
| 92 | + " plt.pause(0.01)\n", | ||
| 93 | + " if keep_going:\n", | ||
| 94 | + " return True\n", | ||
| 95 | + " else:\n", | ||
| 96 | + " return False\n" | ||
| 97 | + ] | ||
| 98 | + }, | ||
| 99 | + { | ||
| 100 | + "cell_type": "code", | ||
| 101 | + "execution_count": null, | ||
| 102 | + "metadata": {}, | ||
| 103 | + "outputs": [], | ||
| 104 | + "source": [ | ||
| 105 | + "\n", | ||
| 106 | + "# Open the connection and start streaming the data\n", | ||
| 107 | + "stream.start_stream()\n", | ||
| 108 | + "print (\"\\n+---------------------------------+\")\n", | ||
| 109 | + "print (\"| Press Ctrl+C to Break Recording |\")\n", | ||
| 110 | + "print (\"+---------------------------------+\\n\")\n", | ||
| 111 | + "\n", | ||
| 112 | + "# Loop so program doesn't end while the stream callback's\n", | ||
| 113 | + "# itself for new data\n", | ||
| 114 | + "while keep_going:\n", | ||
| 115 | + " try:\n", | ||
| 116 | + " plot_data(stream.read(CHUNK))\n", | ||
| 117 | + " except KeyboardInterrupt:\n", | ||
| 118 | + " keep_going=False\n", | ||
| 119 | + " except:\n", | ||
| 120 | + " pass\n", | ||
| 121 | + "\n", | ||
| 122 | + "# Close up shop (currently not used because KeyboardInterrupt\n", | ||
| 123 | + "# is the only way to close)\n", | ||
| 124 | + "stream.stop_stream()\n", | ||
| 125 | + "stream.close()\n", | ||
| 126 | + "\n", | ||
| 127 | + "audio.terminate()\n" | ||
| 128 | + ] | ||
| 129 | + }, | ||
| 130 | + { | ||
| 131 | + "cell_type": "code", | ||
| 132 | + "execution_count": null, | ||
| 133 | + "metadata": {}, | ||
| 134 | + "outputs": [], | ||
| 135 | + "source": [] | ||
| 136 | + } | ||
| 137 | + ], | ||
| 138 | + "metadata": { | ||
| 139 | + "kernelspec": { | ||
| 140 | + "display_name": "Python 3", | ||
| 141 | + "language": "python", | ||
| 142 | + "name": "python3" | ||
| 143 | + }, | ||
| 144 | + "language_info": { | ||
| 145 | + "codemirror_mode": { | ||
| 146 | + "name": "ipython", | ||
| 147 | + "version": 3 | ||
| 148 | + }, | ||
| 149 | + "file_extension": ".py", | ||
| 150 | + "mimetype": "text/x-python", | ||
| 151 | + "name": "python", | ||
| 152 | + "nbconvert_exporter": "python", | ||
| 153 | + "pygments_lexer": "ipython3", | ||
| 154 | + "version": "3.6.5" | ||
| 155 | + } | ||
| 156 | + }, | ||
| 157 | + "nbformat": 4, | ||
| 158 | + "nbformat_minor": 2 | ||
| 159 | +} |
FFT연습/trash.ipynb
0 → 100644
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
Untitled.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "markdown", | ||
| 5 | + "metadata": {}, | ||
| 6 | + "source": [ | ||
| 7 | + "TEST할것\n", | ||
| 8 | + "<입력값>\n", | ||
| 9 | + "1. 일정 데시벨파워 이하는 다 지운 멜스펙토그램 <-아... 원래 데이터셋 새소리 어느정도 작은 소리까지 잡는겨\n", | ||
| 10 | + "2. mel filter 80 & axis=1평균을 뺀 멜스펙토그램\n", | ||
| 11 | + "3. 새소리 주파수 이하는 주파수대는 짜름\n", | ||
| 12 | + "5. 커널씩 보면서 차이나는것만 뽑아내기 (그주변만 비교하는게 있을거같은데)\n", | ||
| 13 | + "6. 멜필터 안씌운거 보고 새소리 주파수 이하 짤라버릴때등.. 안씌운거 보기\n", | ||
| 14 | + "\n", | ||
| 15 | + "<모델>\n", | ||
| 16 | + "1. 일반 뛰어난 CNN모델. 첫번째 모델이 왜 더 좋은지 보자\n", | ||
| 17 | + "3. C+RNN <- RNN 부분 잘 된건가?\n", | ||
| 18 | + "4. Capsul network\n", | ||
| 19 | + "\n", | ||
| 20 | + "<추가적>\n", | ||
| 21 | + "1. 라벨링 : 확실히 귀에 잘 들리고 눈에 잘 보이는 애들만 1로 라벨링, 희미한건 0으로 라벨링 \n", | ||
| 22 | + " -> 필드테스트 한 애들만 맞춘거 비율이 높도록 보이기. 머신이 새라고 한거중에 0인애들만 또 보여주기\n", | ||
| 23 | + "2. 필드테스트랑 원래하던거랑 왜안될까? -> 짹짹이가 데이터셋에 별로없거나 모델이 안좋거나.. (먼저 컴한테 분류시켜보고 판단?)\n", | ||
| 24 | + "3. 그경우, 찌르레기 소리에 초점을 맞춰서 저 패턴을 학습시키고 아예 그걸 찾도록 하는것도 나쁘지 않을듯\n", | ||
| 25 | + "4. 아이폰녹음이랑 뭐가다른지, 실제로 차이가 난건지도 봐야함. " | ||
| 26 | + ] | ||
| 27 | + }, | ||
| 28 | + { | ||
| 29 | + "cell_type": "markdown", | ||
| 30 | + "metadata": {}, | ||
| 31 | + "source": [ | ||
| 32 | + "1. CRNN - RNN 코드 다시 보고 돌리기\n", | ||
| 33 | + "2. CNN - 논문1네 모델 돌리기\n", | ||
| 34 | + "3. 캡슐 네트워크 돌리기\n", | ||
| 35 | + "\n", | ||
| 36 | + "#### scipy / librosa 둘다로 mel spectogram 짜봤는데 librosa가 더 좋았음." | ||
| 37 | + ] | ||
| 38 | + } | ||
| 39 | + ], | ||
| 40 | + "metadata": { | ||
| 41 | + "kernelspec": { | ||
| 42 | + "display_name": "Python 3", | ||
| 43 | + "language": "python", | ||
| 44 | + "name": "python3" | ||
| 45 | + }, | ||
| 46 | + "language_info": { | ||
| 47 | + "codemirror_mode": { | ||
| 48 | + "name": "ipython", | ||
| 49 | + "version": 3 | ||
| 50 | + }, | ||
| 51 | + "file_extension": ".py", | ||
| 52 | + "mimetype": "text/x-python", | ||
| 53 | + "name": "python", | ||
| 54 | + "nbconvert_exporter": "python", | ||
| 55 | + "pygments_lexer": "ipython3", | ||
| 56 | + "version": "3.6.5" | ||
| 57 | + } | ||
| 58 | + }, | ||
| 59 | + "nbformat": 4, | ||
| 60 | + "nbformat_minor": 2 | ||
| 61 | +} |
VANILA+Training_model.ipynb
0 → 100644
This diff is collapsed. Click to expand it.
VANILA_+Make_spectogram+save_to_csv.ipynb
0 → 100644
This diff is collapsed. Click to expand it.
VANILA_EVALUATE.ipynb
0 → 100644
This diff is collapsed. Click to expand it.
VANILA_TEST.ipynb
0 → 100644
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
Various_Spectograms.ipynb
0 → 100644
This diff could not be displayed because it is too large.
badch_testset_blankresults.csv
0 → 100644
This diff could not be displayed because it is too large.
model/bird_sound-17-0.3943.hdf5
0 → 100644
This file is too large to display.
pyaudio 실시간듣기.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 2, | ||
| 6 | + "metadata": {}, | ||
| 7 | + "outputs": [], | ||
| 8 | + "source": [ | ||
| 9 | + "import pyaudio\n", | ||
| 10 | + "import wave" | ||
| 11 | + ] | ||
| 12 | + }, | ||
| 13 | + { | ||
| 14 | + "cell_type": "code", | ||
| 15 | + "execution_count": 6, | ||
| 16 | + "metadata": {}, | ||
| 17 | + "outputs": [ | ||
| 18 | + { | ||
| 19 | + "name": "stdout", | ||
| 20 | + "output_type": "stream", | ||
| 21 | + "text": [ | ||
| 22 | + "* recording\n", | ||
| 23 | + "* done recording\n" | ||
| 24 | + ] | ||
| 25 | + } | ||
| 26 | + ], | ||
| 27 | + "source": [ | ||
| 28 | + "CHUNK = 1024\n", | ||
| 29 | + "FORMAT = pyaudio.paInt16\n", | ||
| 30 | + "CHANNELS = 1\n", | ||
| 31 | + "RATE = 25600\n", | ||
| 32 | + "RECORD_SECONDS = 10\n", | ||
| 33 | + "WAVE_OUTPUT_FILENAME = \"test.wav\"\n", | ||
| 34 | + "\n", | ||
| 35 | + "p = pyaudio.PyAudio()\n", | ||
| 36 | + "\n", | ||
| 37 | + "stream = p.open(format=FORMAT,\n", | ||
| 38 | + " channels=CHANNELS,\n", | ||
| 39 | + " rate=RATE,\n", | ||
| 40 | + " input=True,\n", | ||
| 41 | + " frames_per_buffer=CHUNK)\n", | ||
| 42 | + "\n", | ||
| 43 | + "print(\"* recording\")\n", | ||
| 44 | + "\n", | ||
| 45 | + "frames = []\n", | ||
| 46 | + "\n", | ||
| 47 | + "for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):\n", | ||
| 48 | + " data = stream.read(CHUNK)\n", | ||
| 49 | + " frames.append(data)\n", | ||
| 50 | + "\n", | ||
| 51 | + "print(\"* done recording\")\n", | ||
| 52 | + "\n", | ||
| 53 | + "stream.stop_stream()\n", | ||
| 54 | + "stream.close()\n", | ||
| 55 | + "p.terminate()\n", | ||
| 56 | + "\n", | ||
| 57 | + "wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')\n", | ||
| 58 | + "wf.setnchannels(CHANNELS)\n", | ||
| 59 | + "wf.setsampwidth(p.get_sample_size(FORMAT))\n", | ||
| 60 | + "wf.setframerate(RATE)\n", | ||
| 61 | + "wf.writeframes(b''.join(frames))\n", | ||
| 62 | + "wf.close()" | ||
| 63 | + ] | ||
| 64 | + }, | ||
| 65 | + { | ||
| 66 | + "cell_type": "code", | ||
| 67 | + "execution_count": null, | ||
| 68 | + "metadata": {}, | ||
| 69 | + "outputs": [], | ||
| 70 | + "source": [] | ||
| 71 | + }, | ||
| 72 | + { | ||
| 73 | + "cell_type": "code", | ||
| 74 | + "execution_count": null, | ||
| 75 | + "metadata": {}, | ||
| 76 | + "outputs": [], | ||
| 77 | + "source": [] | ||
| 78 | + } | ||
| 79 | + ], | ||
| 80 | + "metadata": { | ||
| 81 | + "kernelspec": { | ||
| 82 | + "display_name": "Python 3", | ||
| 83 | + "language": "python", | ||
| 84 | + "name": "python3" | ||
| 85 | + }, | ||
| 86 | + "language_info": { | ||
| 87 | + "codemirror_mode": { | ||
| 88 | + "name": "ipython", | ||
| 89 | + "version": 3 | ||
| 90 | + }, | ||
| 91 | + "file_extension": ".py", | ||
| 92 | + "mimetype": "text/x-python", | ||
| 93 | + "name": "python", | ||
| 94 | + "nbconvert_exporter": "python", | ||
| 95 | + "pygments_lexer": "ipython3", | ||
| 96 | + "version": "3.6.5" | ||
| 97 | + } | ||
| 98 | + }, | ||
| 99 | + "nbformat": 4, | ||
| 100 | + "nbformat_minor": 2 | ||
| 101 | +} |
오디오10초씩자르기.ipynb
0 → 100644
| 1 | +{ | ||
| 2 | + "cells": [ | ||
| 3 | + { | ||
| 4 | + "cell_type": "code", | ||
| 5 | + "execution_count": 2, | ||
| 6 | + "metadata": {}, | ||
| 7 | + "outputs": [], | ||
| 8 | + "source": [ | ||
| 9 | + "import pydub" | ||
| 10 | + ] | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "cell_type": "code", | ||
| 14 | + "execution_count": 4, | ||
| 15 | + "metadata": {}, | ||
| 16 | + "outputs": [ | ||
| 17 | + { | ||
| 18 | + "name": "stdout", | ||
| 19 | + "output_type": "stream", | ||
| 20 | + "text": [ | ||
| 21 | + "done\n" | ||
| 22 | + ] | ||
| 23 | + } | ||
| 24 | + ], | ||
| 25 | + "source": [ | ||
| 26 | + "from pydub import AudioSegment\n", | ||
| 27 | + "\n", | ||
| 28 | + "for i in range(0,45):\n", | ||
| 29 | + " t1 = i * 10000 #Works in milliseconds\n", | ||
| 30 | + " t2 = (i+1) * 10000\n", | ||
| 31 | + " \n", | ||
| 32 | + " newAudio = AudioSegment.from_wav(\"./New/IMG_3867.wav\")\n", | ||
| 33 | + " newAudio = newAudio[t1:t2]\n", | ||
| 34 | + " newAudio.export('./field/IMG_3867%d.wav'%(i), format=\"wav\")\n", | ||
| 35 | + "\n", | ||
| 36 | + "print('done')" | ||
| 37 | + ] | ||
| 38 | + }, | ||
| 39 | + { | ||
| 40 | + "cell_type": "code", | ||
| 41 | + "execution_count": null, | ||
| 42 | + "metadata": {}, | ||
| 43 | + "outputs": [], | ||
| 44 | + "source": [] | ||
| 45 | + } | ||
| 46 | + ], | ||
| 47 | + "metadata": { | ||
| 48 | + "kernelspec": { | ||
| 49 | + "display_name": "Python 3", | ||
| 50 | + "language": "python", | ||
| 51 | + "name": "python3" | ||
| 52 | + }, | ||
| 53 | + "language_info": { | ||
| 54 | + "codemirror_mode": { | ||
| 55 | + "name": "ipython", | ||
| 56 | + "version": 3 | ||
| 57 | + }, | ||
| 58 | + "file_extension": ".py", | ||
| 59 | + "mimetype": "text/x-python", | ||
| 60 | + "name": "python", | ||
| 61 | + "nbconvert_exporter": "python", | ||
| 62 | + "pygments_lexer": "ipython3", | ||
| 63 | + "version": "3.6.5" | ||
| 64 | + } | ||
| 65 | + }, | ||
| 66 | + "nbformat": 4, | ||
| 67 | + "nbformat_minor": 2 | ||
| 68 | +} |
-
Please register or login to post a comment