この記事にはGoogle Adsenseによる広告が含まれています。

はじめに

Praatスクリプトを本格的に書いていくには,Praatスクリプトの「文法」を学ぶ必要があります。体系的に学ぶための王道はPraatのヘルプに用意されているScripting tutorialを最初から最後まで丁寧に読むことですが,ここでは実例をもとにいくつかの基本的な事項を学んでいきます。

まず,新しいスクリプトを書くための準備として,オブジェクトウィンドウの上部メニューからPraat > New Praat scriptを実行し,スクリプトのウィンドウを立ち上げましょう。

infoウィンドウへの出力(Hello, world!)

たいていの場合,プログラミング言語やスクリプト言語の学習において最初にすることは,文字列を出力してみることです。Praatの場合一般的に,文字列はinfoウィンドウに出力します。

ScriptEditor上に,次のように入力してみましょう。

writeInfoLine: "Hello, World!"

最初のwriteInfoLineは,コロン(:)以下をInfoウィンドウに出力し改行することを意味します。それ以前にInfoウィンドウに何か書かれていた場合,以前に書かれていたものを消した上で新たに出力します。出力するものが文字列の場合,出力したい文字列はダブルクオテーションで囲みます。なお,Praatスクリプトにおいて,多くの場合スペースは意味を持ちません。上の例ではコロンと”Hello world”の間にスペースを入れていますが,スペースを全く入れなくても,スペースを二つ以上入れても問題ありません。

スクリプトウィンドウ上部メニューのRun > Runにより,このスクリプトを実行してみましょう。すると,次のようなInfoウィンドウが立ち上がります。

Hello worldの次の列にも文字列を出力したい場合は,appendInfoLineというコマンドを使います。以下を入力して実行してみましょう。

writeInfoLine: "Hello, World!"
appendInfoLine: "こんにちは世界"

数字を出力するときには,ダブルクオテーションはつけません。以下を実行してみましょう。

writeInfoLine: "Hello, World!"
appendInfoLine: "こんにちは世界"
appendInfoLine: 1

変数(variables)

Praatでは,変数をつくり,そこに値を代入することができます。以下のスクリプトを書き,実行してみましょう。

a = 1
writeInfoLine: a

ここでは,1行目でaという変数に1という値を代入しています。2行目でaの値を出力するようにしているので,Infoウィンドウ上では 1 と出力されるはずです。

Praatスクリプトにおいて,変数名は必ず小文字で始まらなければならず,2文字目以降にはアルファベット(大文字・小文字),数字,アンダーバー(_)を使うことができます。この範囲内で,変数名は自由につけることができます。

変数を使って計算をすることもできます。

a = 1
b = 2
c = a + b
writeInfoLine: c

Infoウィンドウ上で 3 と出力されたでしょうか。

文字列の場合は,変数名に$をつけます。また,代入する際にダブルクオテーションで囲みます。

d$ = "Hello, World!"
writeInfoLine: d$

他の変数の値を文字列の中に埋め込むには,以下のようにシングルクオテーションを使います。

a = 1
b = 2
c = a + b
e$ = "'a' + 'b' = 'c'"
writeInfoLine: e$

これを実行すると,以下のように出力されるはずです。

forループ

Praatスクリプトの文法のうちで重要なものの一つに(多くのプログラミング言語やスクリプト言語に言えることですが),forループというものがあります。以下のスクリプトを見てみましょう。

writeInfoLine: "start"

for i from 1 to 10
   appendInfoLine: i
endfor

ここで,for i from 1 to 10というのは,iという変数に1から10を順番に代入していくということを意味しています。まずiに1が代入され,appendInfoLine: iが実行され,次のendforでforの行に戻り,iに2が代入されます。このようなforからendforの繰り返しを,iが10になるまで続けます。

このスクリプトを実行すると,以下のように出力されます。

forとendforは必ずセットで用いられます。forで始まりendforで終わるものを一般にforループと呼びます。forループの内部(ここではappendInfoLineの行)は,スペースやタブによって字下げして書くのが一般的です。これは,スクリプトを見やすくするためです。