Microsoft Word - Praat Scriptの書き方.doc

Similar documents
1. 使用準備 1.1. ダウンロード Praat のサイト ( 中で 以下のリンク先からダウンロードできます 1.2.Praat の構成 praat.exe を立ち上げると Praat Objects と Praat Picture

Microsoft PowerPoint - PraatKyotoForWeb.ppt

作業手順手引き

ガイダンス

PowerPoint プレゼンテーション

ゲートウェイのファイル形式

monologue Sound Librarian 取扱説明書

ユーザ デバイス プロファイルの ファイル形式

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

このうち ツールバーが表示されていないときは メニューバーから [ 表示 (V)] [ ツールバー (T)] の [ 標準のボタン (S)] [ アドレスバー (A)] と [ ツールバーを固定する (B)] をクリックしてチェックを付けておくとよい また ツールバーはユーザ ( 利用者 ) が変更

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

Microsoft Word - VBA基礎(6).docx

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Excel2013 シート・ブック間の編集と集計

Taro-Basicの基礎・はじめに(公

スライド 1

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

monologue Sound Librarian 取扱説明書

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

JavaScriptで プログラミング

OECD QSAR Toolbox活用マニュアルv1.0

目次 1. フラッシュ型スライド教材を作ってみよう 2 2. 文字が順に消えていくスライド教材を作ってみよう 5 3. 文字が順に現れるスライド教材を作ってみよう 8 4. 音声とともに文字の色が変わるスライド教材を作ってみよう スライド教材を種類別にまとめてみよう 14 * 実践事例集

連立方程式の解法

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

電話機のファイル形式

<4D F736F F D208AC888D B836A F C91808DEC837D836A B81698AC7979D8ED A E646F6

Microsoft Word A02

Microsoft Word - no15.docx

引き算アフィリ ASP 登録用の日記サイトを 作成しよう Copyright 株式会社アリウープ, All Rights Reserved. 1

新規コンポーネントの作成方法

PowerPoint Presentation

Proc luaを初めて使ってみた -SASでの処理を条件に応じて変える- 淺井友紀 ( エイツーヘルスケア株式会社 ) I tried PROC LUA for the first time Tomoki Asai A2 Healthcare Corporation

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

パソコン研修資料 - カシミール 3D の使い方 年度版 倉敷ハイキング倶楽部 HP 委員会

MoreStudy 第 6 章 MoreStudy 第 6 章 第 1 節 貼り付け 3 [ 形式を選択して貼り付け ] ダイアログから [Microsoft Excel ワークシート ] を選択し [OK] ボタンを 押します 1 Excel ワークシートで貼り付け [Pastespec] リボン

PowerPoint プレゼンテーション

Oracle SOA Suite 11gコンポジットに対するSOASchedulerの構成

サイボウズ Office 10「リンク集」

Datalink_summary

目次 1. HLA Fusion 3.0 がインストール可能な環境 HLA Fusion 3.0 のインストール HLA Fusion 3.4 のインストール 初期設定用データベース接続 ( 初めての方のみ ) 既存データベースのUpg

Microsoft Word - Word1.doc

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

Microsoft Word - ExcelTable.docx

プログラミング演習

PowerPoint プレゼンテーション

EXCEL VBA講座

サイボウズ Office 8 リンク集マニュアル

プログラミング演習

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

< 住所録の作成 > 宛名印刷には 差し込む住所録ファイルが必要です Excel を使って住所録を作成しましょう Excel の起動 エクセルを起動しましょう ( スタートボタン ) をクリック すべてのプログラム をポイント Microsoft Office をクリック Microsoft Off

スライド 1

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

テキストファイルの入出力1

Eschartマニュアル

MMC Unity講座

PowerPoint Presentation

OTRS10 他社システムOTRS呼出利用手順書

全国保育士会会員名簿の 更新にかかる 操作手順

SolarWinds Event Log Forwarder for Windows v

1 Word2007 を立ち上げて 表を作って内容を入力し 体裁を整える 1 時間の関係で あらかじめ下記のような簡単な文書を作成して デスクトップにファイル 旅行案内操作前 1 を置いてありますからこのファイルをダブルクリックして開いて下さい (* 時間のある方は末尾に表の挿入方法などを参考に書い

Transcription:

Praat Script の書き方フォルマントやピッチの計測に Script を用いると 計測点をマークした後に 自動的に計測できる 1. 変数とは 電卓で計算した値をメモリーに一時記憶するのと同じように 計算の結果を保存しておく場所である この変数は 中学生で習った数学のxやyに当たる しかし xやyは 数式の右辺にも左辺にも使えるが コンピューターのプログラムでは x= というように使う Praat Script で 数式以外の時で使う時には 引用符で囲まなければならない また 変数の名前は英小文字から始めなければならない 例 :time_middle = (end_time start_time ) /2 Get value at time... 1 'start_time' Hertz Linear 引用符不要 引用符必要 2. まず 普通に計測する方法から説明する Praat の Objects で スピーチ ( 例として wav ファイルを使うが aiff ファイルでも良い ) を読み込む (Read from file ) 次に TextGrid を作る TextGrid は Interval Tier と Point Tier がある (Tier は層 )New Create Text Grid とすると 新ウィンドウが開き All tier names: Mary John bell, Which of these are point tiers?: bell と書かれている そのまま OK をクリックすると Mary と John という Interval Tier に bell という Point Tier のある TextGrid が作成され 名前が Mary_John_bell となる 名前は Rename をクリックすると変えられる Interval Tier は 境界線を示し Point Tier は 計測点などを示す TextGrid の構成や名前は 目的に合わせて決める ここでは Interval Tier と Point Tier がそれぞれ1つの TextGrid を作成し 名前を wav ファイルと同じにする

3. wav ファイルと TextGrid ファイル (Shift または Ctrl を押しながら ) を選択した後に Scale Time をクリックする TextGrid の元の長さは 1 秒だが ScaleTime をクリックすることにより wav ファイルと同じ長さに調整することができる その後 TextGrid に Boundary ( 境界線 ) やポイントを入れる また 境界線と境界線の間に 音素などの情報も入れられる Wav ファイルと TextGrid ファイルを1つに Collection ファイルとして保存することもでき また 別々に保存することもできる 4. フォルマントの計測をする まず wav ファイル (Sound ファイル ) を選択し Formants & LPC- To Formant (Burg) をクリックすると 新しいウィンドウが開き OK をクリックすると Praat Objects のウィンドウに wav ファイルと同じ名前の Formant が現れる Formant を選択し Query Get value at time をクリックすると ある時間のフォルマントを計測できる

5. Praat には ここまで行ったことが 記録されている Praat New Praat script で untitled script が現れ Edit Paste history をすると 次のように書かれている Read from file... E: test c1.wav select Sound c1 To Formant (burg)... 0 5 5000 0.025 50 Get value at time... 1 0.5 Hertz Linear ( フォルマントの三番目の項目は 女性は 5500 男性は 5000 を一般的に用いる 最初の1は 第 1フォルマントを 0.5 は 時間が 0.5 秒であることを示す ) この Paste history を使うと script が比較的 簡単に書ける 6. フォルマントの値を計測する時の時間は TextGrid の interval の中心や point で決めた点で計測することが多い そこで TextGrid の Interval の開始時間や終了時間 又は point の示す時間を調べる この時に まず Praat Control で Query で 時間を尋ねる その後 Paste history を使うと 次のようになる select TextGrid c1 Get start point... 1 2 Get end point... 1 2 Get time of point... 2 1 最初の行で TextGrid を select( 選択 ) している この選択を忘れるとエラーの原因となる 次の行の 1 は 1 番目の Interval Tier で 2 は2 番目の Interval を指す 4 行目の 2 は 2 番目の Point Tier を指し 次の 1 は 最初の point を意味する その後 変数の名前を決める 最初の Tier の2 番目の interval の開始時間を time_start 終了時間を time_end 2 番目の Point Tier の最初の point の時間を time_point とすると 次のようになる select TextGrid c1 time_start = Get start point... 1 2

time_end = Get end point... 1 2 time_point = Get time of point... 2 1 次に interval の中央の時間を time_center とすると time_center = (time_start + time_end) /2 となる ここで interval の中央や point のフォルマントを計測する それぞれのフォルマントを f1_center f2_center f1_point f2_point とすると select Formant c4 f1_center = Get value at time... 1 time_center Hertz Linear f2_center = Get value at time... 2 time_center Hertz Linear f1_point = Get value at time... 1 time_point Hertz Linear f2_point = Get value at time... 1 time_point Hertz Linear となる これで 1つのファイルのフォルマントが計測できる Query にあるコマンドを使うとある区間内の最大値や最小値も計測できる また TextGrid に記入した内容 ( 音素 ) なども 知ることができる (Get label) 7. 次にあるディレクトリ ( ファイルフォルダー ) のすべての値を一度に計測する方法に入る まず ディレクトリーにあるすべての wav ファイルの名前を調べる そのために New Create Strings as file list をクリックする そうすると Praat Objects に Strings filelist が現れるが そのリストには wav ファイルのみの名前が記されている まず wav ファイルの数をしらべ numberoffiles という変数にする Create Strings as file list... filelist E: test *.wav select Strings filelist numberoffiles = Get number of strings 8. 次に 順番にファイルを読み込んでいくのだが ここでループ ( 繰り返し ) を使うが 次のような1 組のコマンドを使う for i to numberoffiles

endfor この空白部分で 色々なことを行う この i は 1から ディレクトリーにあるファイルの数まで 変化するので 次のような script で 順番にファイルを読みこむ 一般にループの中の行は 下げる Create Strings as file list... flielist E: test *.wav select Strings filelist numberoffiles = Get number of strings for i to numberoffiles select Strings filelist file_name$ = Get string... i Read from file... E: test 'file_name$' endfor ここで 文字型 (string) 変数 つまり 記憶する内容が アルファベットで表わされる変数の名前は $ を最後につけなければならない この script を実行すると wav ファイルのみを読み込む 9. 次に TextGrid ファイルを読み込むために script を修整する Read from file E: test file_name$ を実行した後には wav ファイルが選択されている そこで name$ = selected $( Sound ) とすると 現在 選択されたファイルの wav 部分のない名前が name$ となる そして その後ろに TextGrid を付け加えると TextGrid ファイルを読み込む Create Strings as file list... list E: test *.wav numberoffiles = Get number of strings

for i to numberoffiles file_name$ = Get string... i Read from file... E: test 'file_name$' name$= selected$("sound") Read from file... E: test 'name$'.textgrid endfor これで wav と TextGrid の両方を読み込むことができる 10. 5で行ったように Sound ファイルから Formant ファイルを作るが 最初に Sound ファイルを選択する その後 Formant ファイルをつくる select Sound 'name$' To Formant (burg)... 0 5 5000 0.025 50 この Formant ファイルの名前は Sound ファイルと同じである 次に6で行ったように 時間を決める そして フォルマントを計測する for i to numberoffiles file_name$ = Get string... i Read from file... E: test 'file_name$' name$= selected$("sound") Read from file... E: test 'name$'.textgrid select Sound 'name$' To Formant (burg)... 0 5 5000 0.025 50 select TextGrid 'name$' time_point = Get time of point... 2 1 select Formant 'name$'

f1_center = Get value at time... 1 'time_center' Hertz Linear f2_center = Get value at time... 2 'time_center' Hertz Linear f1_point = Get value at time... 1 'time_point' Hertz Linear f2_point = Get value at time... 1 'time_point' Hertz Linear endfor これで フォルマントの計測ができたが 音声のない部分や TextGrid の範囲以外のところで フォルマントの計測を行うとエラーとなる その場合のために 下記のようなコマンドを入れることもある if (f1_point = undefined) (f2_point = undefined) echo error: check 'name$' endif ここで echo は info ウィンドウに残すメッセージである このメッセージでどのファイルが問題なのかチェックを行えるので便利である なお ファイルが多い場合 メモリーが足りなくなる恐れがあるので ループを終わる前に Sound などを除去しておいた方が よい select Sound 'name$' select TextGrid 'name$' select Formant 'name$' endfor 11. データの入っているディレクトリー ( フォルダー ) や TextGrid の層のようによく変更する項目は 使用者に入力をしてもらうようにすると便利である ここで text は 空白のない文字型変数 integer は整数型変数のことである 他のタイプもある (Help Scripting 6.1 参照 ) form Measuring Formants text directory E: test integer tier_number 2 integer num_point 1

integer max_formant 5000 endform 整数型の変数は 'tier_number' のように 使用できるが 文字型変数には $ を最後に加え 'directory$' として 使用する 12. 計測したフォルマントの値を保存するのに info 又は Table を使う info を使う場合ループの前に info を初期化した後に printline で 書き込んでいく 各項目の間にタブを入れる clearinfo printline 'name$' 'tab$' 'f1_point' 'tab$'' f2_point' 結果は 次のようになる c1 358.60200552080215 358.60200552080215 c2 912.8032046621003 912.8032046621003 この結果は info に表示されているので コピーして メモ帳に貼り付けて用いる 13. 表 (Table) を使うやり方は次のようである ループの前に 表の項目 ( 列 ) について決める 上記のように ファイルの名前 F1 F2 だけの場合は 3 列 行は ファイルの数にする 次に列 ( 項目 ) の名前をつける この例では 表の名前として formant_table 項目の名前として file_name f1 f2 とする Create Table... formant_table numberoffiles 3 Set column label (index)... 1 file_name Set column label (index)... 2 f1 Set column label (index)... 3 f2 これで 表ができた 次にループの中で 表にフォルマントの値などを記入する select Table formant_table Set string value... i file_name 'name$' Set numeric value... i f1 'f1_point' Set numeric value... i f2 'f2_point'

最後にループの終了後 Excel ファイルと保存する Write to text file... E: test formant_table.xls この表は エクセルファイルとして保存されているので そのまま 分析に用いることができる 結果は 次のようである なお 多数の interval ( 区間 ) のフォルマントなどを計測するときは 二重のループを用いる 14. Script を書く時に文末に不要な空白がないように気をつける必要がある 空白があると エラーとなる また 新しい script を実行しているときに エラーが起きることは よくある そのようなときに どこまで 実行したか 変数の値が知りたいときに echo は 便利である 例えば 現在 何番目のループかを知りたいとき echo loop : 'i' というコマンドを挿入しておく また フォルマントの計測の部分で echo measuring formant というように書いておくと エラーが起きた時に それ以降の部分のチェックを行えばよいことがわかる また # を使って日本語のコメントは 入れることができる 15. Script の例 Info ウィンドウを使った script # ディレクトリーなどの情報をインプット form Measuring Formants text directory E: test integer tier_number 2 integer point_number 1 integer max_formant 5000 endform # info ウィンドウを刷新 ディレクトリーの wav ファイルのリストを作成 clearinfo

Create Strings as file list... list 'directory$' *.wav # ディレクトリーにあるファイルの数を調べる numberoffiles = Get number of strings # ループリストに従って wav ファイルを読み込む # 次に 拡張子を除いた名前を name$ とする 次に TextGrid を読み込む for i to numberoffiles file_name$ = Get string... i Read from file... 'directory$' 'file_name$' name$= selected$("sound") # TextGrid を読み込み point の時間情報を入手 Read from file... 'directory$' 'name$'.textgrid time_point = Get time of point... 'tier_number' 'point_number' # Formant ファイルを作成 その後 point におけるフォルマントを計測 select Sound 'name$' To Formant (burg)... 0 5 max_formant 0.025 50 f1_point = Get value at time... 1 'time_point' Hertz Linear f2_point = Get value at time... 1 'time_point' Hertz Linear # フォルマントの値が計測できない場合 エラーメッセージを出す if (f1_point = undefined) (f2_point = undefined) (time_start = undefined) echo error: check 'name$' F1: f1_point F2: f2_point endif # info ウィンドウにフォルマントを書き込む printline 'name$' 'tab$' 'f1_point' 'tab$' 'f2_point' # 使用済みのファイルを除去 select Sound 'name$'

select TextGrid 'name$' select Formant 'name$' endfor 16. 表を使った Praat Script # ディレクトリーなどの情報をインプット form Measuring Formants text directory E: test integer tier_number 2 integer point_number 1 integer max_formant 5000 endform # ディレクトリーのファイルのリストを作成 ファイル数を調べる Create Strings as file list... list 'directory$' *.wav numberoffiles = Get number of strings # 表の作成ファイル数の行で 3 列の表とする 項目名を決定 Create Table without column names... formant_table numberoffiles 3 Set column label (index)... 1 file_name Set column label (index)... 2 f1 Set column label (index)... 3 f2 # ループ for i to numberoffiles file_name$ = Get string... i Read from file... 'directory$' 'file_name$' name$= selected$("sound")

select Sound 'name$' To Formant (burg)... 0 5 'max_formant' 0.025 50 # TextGrid を読み込み point の時間を調べ フォルマントを調べる Read from file... 'directory$' 'name$'.textgrid time_point = Get time of point... 'tier_number' 'point_number' select Formant 'name$' f1_point = Get value at time... 1 'time_point' Hertz Linear f2_point = Get value at time... 2 'time_point' Hertz Linear # フォルマントの値が不定の場合 エラーメッセージを出す if (f1_point = undefined) (f2_point = undefined) (time_start = undefined) echo error: check 'name$' F1: f1_point F2: f2_point endif # 表に情報を記入する select Table formant_table Set string value... i file_name 'name$' Set numeric value... i f1 'f1_point' Set numeric value... i f2 'f2_point' # 使用済みのファイルの除去 select Sound 'name$' select TextGrid 'name$' select Formant 'name$' endfor # 表を書きだす select Table formant_table Write to table file... 'directory$' formant_table.xls Copyright Setsuko Shirai 2009