【Python】任意周波数の音をWAVデータとして保存する方法!

こんにちは、ヒガシです。

 

このページでは、前回作成した救急車のサイレン音データをWAVファイルとして保存する方法をご紹介していきます。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

必要なライブラリ

今回は作成した音の配列データをscipyというライブラリを使ってWAVファイルとして保存していきます。

 

scipyをインストールしていない方は、まずはインストール作業から始めましょう。

 

以下2つのコードが通ればOKです。

import scipy
from scipy.io.wavfile import write

 

スポンサーリンク

scipyで配列データをWAVファイルとして保存する方法

それでは本題である音声データをWAVファイルとして保存する方法をご紹介していきます。

 

やり方は以下の通りです。

scipy.io.wavfile.write(filename=A, rate=B, data=C)
A:保存後のファイル名(例:’sample.wav’)
B:サンプルフレームレート
C:WAV化する配列データ

とはいえこれだけではよくわからないと思いますので、実際に配列を作成するところからコーディングをしてみましょう。

 

スポンサーリンク

配列をWAV化するサンプルコード

配列作成⇒音声保存という流れを実演してみます。

import pygame
import numpy as np
import scipy
from scipy.io.wavfile import write
#モジュール初期化
pygame.mixer.init(frequency=44100, size=-16, channels=1)
#再生時間を指定
time=0.6
#周波数を指定
Hz1=960
Hz2=770
#配列データを作成
arr_size = int(44100*time*2)
x=np.linspace(0,arr_size,arr_size)
pi_y=np.sin(2*np.pi*Hz1/44100*x)*10000
po_y=np.sin(2*np.pi*Hz2/44100*x)*10000
y=np.concatenate([pi_y,po_y],0)
y=y.astype(np.int16)
sound_arr = y.reshape(int(y.shape[0]/2), 2)
#音を保存
scipy.io.wavfile.write(filename='pipo_sound.wav', rate=44100, data=sound_arr)

 

最後の1行までが配列データの作成作業、最後の1行がwavファイルへの書き出し処理です。

 

これでプログラム実行フィルだにpipo_sound.wavというファイルが保存されています。

以下が実際に出てきたファイルです。

※再生するとピーポーという音が流れます。

 

問題なく実行できていそうですね。

 

スポンサーリンク

おわりに

というわけで今回はpythonを使って、作成した音の配列データをWAVファイルとして保存する方法をご紹介しました。

音声データ処理の際などにぜひご活用ください。

 

このように、私のブログでは様々なスキルを紹介しています。

過去記事一覧

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました