TIPS


Praatで連続して音声を読み込む方法

sound.zip
  • 音声ファイルはその場にsoundというフォルダ名で展開して下さい
  • Praatスクリプトの使い方
wavread.praat
  • 上記のファイルをダウンロード
  • Praat -> Open Praat Script...
  • 上記のファイルを読み込むfor i from 1 to 24
  • Read from file... C:\sound\expr_mono_'i'.wav
  • endfor
  • シングルクォーテーションマークで囲まれた変数がfor文でループする。
  • Run -> Run もしくは選択範囲を指定して Run Selection


Praatで連続してresampleをする方法

  • 上のスクリプトを応用
  • 音声ファイルのサンプリング周波数を調べる方法
  • 前のセクションで読み込んだ音声を一つ選択
  • Query -> Query Time Sampling -> Get sampling frequency
  • すべての音声を8000Hzに変換したい。
  • いったんすべての音声をRemove
  • 一番上の音声を選んで、Shiftを押しながら下矢印→すべて選択→左下のRemoveボタンを押す
  • Praat Scriptをダウンロード
resample.praat
  • 同じように読み込む
  • for i from 1 to 24
  • Read from file... D:\sound\expr_mono_'i'.wav
  • Resample... 8000 50
  • Write to WAV file... D:\sound\expr_mono_'i'_8000.wav
  • endfor
  • Run -> Run で実行
  • 8000 Hzresampleできた。


Praatのマクロ機能で作業を記録してPraat Script

  • Praat ではすべての作業がScript化できる
  • Praat Script windowに移動
  • Edit -> Paste history
  • 今までの作業がスクリプト化!
  • For文でアレンジすることにより、ループ処理ができる


参考: How to cite Praat? どうやって論文でPraatを引用したらいい?

  • Retrieved November 26, 2008, from http://www.praat.org/
  • If the journal does not allow you to cite a web site, then try:
  • Boersma, Paul (2001). Praat, a system for doing phonetics by computer. Glot International 5:9/10, 341-345.


MATLAB: ファイル名がバラバラの音声ファイルを処理したい

  • 手動で処理を掛けるのは面倒
  • OSでリストを生成して、MATLABで読み込ませる
  • 対象の音声ファイルをCドライブにダウンロードして展開して下さい。
random_sound.zip


Windows コマンドプロンプトでリストを作る方法

  • Windowsのコマンドプロンプトで練習
  • スタートボタン-> 検索の開始のところに cmd と入力
  • XPでは、「ファイル名を指定して実行」-> cmdと入力
  • Cドライブに移動> c:
  • random_soundフォルダに移動> cd random_sound
  • ファイル一覧を表示> dir
  • 音声ファイルだけ表示> dir *.wav
  • 余計な情報を削除してファイル名だけ表示> dir /b *.wav
  • 出力結果をテキストファイルに保存> dir /b *.wav > wavlist.txt
  • Linux, Unix, Mac OS Xの場合はdirlsに置き換える(/bは必要なし)> ls *.wav > wavlist.txt
  • 無事にリストができました。random_soundフォルダの中のwavlist.txtを開いてみましょうbackr_typeD_60.wav
  • expr_mono_7_proc_TFS_E30.wav
  • expr_word_typeD_33.wav
  • noise_question.wav
  • us_0426.wav
  • これを応用してMATLABで音声ファイルを読み込みます。


MATLABで音声ファイルの一覧を読み込む方法

  • system関数で、OSのコマンドを実行> system('dir')
  • > system('dir /b *.wav > wavlist.txt')
  • textreadコマンドでリストを変数に読み込み> wlist=textread(‘wavlist.txt’,’%s’);
  • for文で繰り返し処理が可能> for i=1:5
  • > x(i,:)=wavread(char(wlist(i,:)));
  • > end


MATLABでファイルを保存するときに、時刻情報をファイル名にする方法

  • clock関数>> clock
  • ans =
  • 1.0e+03 *
  • 2.0080 0.0120 0.0020 0.0110 0.0520 0.0069
  • 2008() 12() 2() 11() 52() 69()
  • clock関数をファイル名に利用a=clock;
  • savename=['exp_result_',num2str(a(1)),'_',num2str(a(2)),'_',num2str(a(3)),'_',num2str(a(4)),'_',num2str(a(5)),''];
  • save(savename,'result')
  • resultという変数がexp_result_2008_12_2_11_52.matという名前で保存される。
  • wavwriteにも応用可能


MATLABGUIを作る方法

  • guide と入力> guide
  • ブランクGUI (デフォルト)を選択
  • 格子状のフィールドにこれからいろいろ配置します。
  • 左側が各種ボタンやグラフ、テキストボックスを示しています。
  • プッシュボタンを1個設置、ダブルクリックし、左のプロパティで名前をinputとしましょう。
  • axes(グラフ)を1個設置
  • デスクトップにguiというフォルダを作って「waveplot」と言う名前で保存しましょう。  「ファイル」→「保存」
  • 生成されたmファイル(スクリプトの中の) pushbutton1の関数に移動
  • sin波を生成するコマンドを作成x=0:0.01:10*pi;
  • y=sin(x);
  • plot(handles.axes1,x,y);
  • 再生ボタンを押してGUIを起動
  • inputを押しすとsin波が生成されましたか?
  • 次に、2つめのグラフを入れるために、一つ目のaxesを上方向に縮小しましょう。
  • 空いたスペースに2つめのaxesを設置しましょう。
  • スクリプトを以下のように書き換えます。さきほどのsin波のスクリプトはコメントアウトしましょう。[fname fpath]=uigetfile('*.wav');
  • [y fs]=wavread([fpath fname]);
  • t=[1:length(y)]/fs;
  • spectrogram(y)
  • plot(handles.axes1,t,y)
  • 再生ボタンを押して、GUIを出しましょう。
  • inputボタンを押して、先ほどダウンロードした音声ファイルを一つ選択して下さい。  音声波形とスペクトログラムが表示されましたか?
  • 音声を再生しましょう。もう一つpushボタンを作成して、playという名前にしてください。
  • pushbutton1pushbutton2の関数に以下のコマンドを追加してください。#for pushbutton1
  • save fs
  • save y
  • #for pushbutton2
  • load fs
  • load y
  • soundsc(y,fs)
  • 図を消してから再生ボタンを押して下さい。inputでファイルを選んだあとにplayを押すと、音声が再生されましたか?


LaTeXの使い方


文献管理の方法


USBメモリに入れておくと便利なプログラム