iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
1
自我挑戰組

聽著音樂往技術宅邁進系列 第 6

DAY 6 - 用python看看音訊

  • 分享至 

  • twitterImage
  •  

昨天提到了在電腦儲存聲音時,有兩個名詞很重要——位元深度、取樣頻率,但大家看了解釋可能還不是很清楚那在幹嘛,今天我們會用python簡單的來看看一個440Hz的sin波

環境設定
需要下載以下套件:scipy(訊號處理和其他科學與工程中常用的計算)、matplotlib(繪圖)、numpy(矩陣運算)

程式

from scipy.io.wavfile import read  //read的介紹可以看本篇下面
(fs, x) = read('sine-440.wav')     //fs是用int存的取樣頻率、x是用array存的聲音訊號
                                   //使用此函式時,可以找自己有的.wav檔丟進去

我是用ipython,所以可以在下圖很快的看到output,能看到fs、x的值和儲存形式
昨天提到的取樣頻率、時間、資料的關係(x = fs * t ),在這裡也能很清楚的看到
https://ithelp.ithome.com.tw/upload/images/20190922/20120890945rzBWDiM.png

看完基本的參數後,我們來看看要怎麼把圖畫出來吧~
但首先先把時間(t)變成矩陣,再描圖

import numpy as np
t = np.arange(x.size)/float(fs)

import matplotlib.pyplot as plt
plt.plot(t, x)    //描繪圖形
plt.show()        //顯示圖形

下圖看起來好像一坨東西
https://ithelp.ithome.com.tw/upload/images/20190922/20120890cqHyOHH6h6.png

放大之後就能看出波的形狀了吧~
https://ithelp.ithome.com.tw/upload/images/20190922/20120890w9Drx9fetP.png

以下為read的介紹
在ipython打help(read)時,可以看到read的介紹

read(filename, mmap=False)
    Open a WAV file
    
    Return the sample rate (in samples/sec) and data from a WAV file.
    
    Parameters
    ----------
    filename : string or open file handle
        Input wav file.
    mmap : bool, optional
        Whether to read data as memory-mapped.
        Only to be used on real files (Default: False).
    
        .. versionadded:: 0.12.0
    
    Returns
    -------
    rate : int
        Sample rate of wav file.
    data : numpy array
        Data read from wav file.  Data-type is determined from the file;

上一篇
DAY 5 - 用數位的方式抓住聲音
下一篇
DAY 7 - 聲音到底怎麼跑進電腦裡的呢&ADC觀念
系列文
聽著音樂往技術宅邁進34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言