2

現在、Praat と一緒に作業しているだけで、3 つのサウンド (物語) ファイルのコレクションを使用して次のことを行うスクリプトを作成しようとしています。私は c) まで管理しましたが、スクリプトの部分は比較的簡単です。私が得られないのは、それらの列を含むテキスト ファイルに書き込む方法です。どんな助けでも素晴らしいでしょう!

a) ナラティブ 1 ~ 3 のそれぞれの単音層で、ラベルが 1 文字の母音を表すすべての音程を抽出し、時間を記録するプログラムを作成します。結果として得られる各サウンドには、関係する母音を識別する適切なラベルが必要です

b) これらの間隔のそれぞれに対応する Formant (burg) オブジェクトを作成します。

c) 各フォルマント オブジェクトの中点を計算します。

c) これらの中点のそれぞれでフォルマント 1、2、および 3 の値を取得します。

d) 次の見出しを持つテキスト ファイルを書き込みます。

物語# ラベル 中間点 時間 F1 F2 F3

その下に、各母音の適切な情報

4

2 に答える 2

4

簡単な方法

これを行う最も簡単な方法は、出力をオブジェクトに書き込んでから、TablePraatのSave to comma-separated fileコマンドを使用してそれを外部ファイルに保存することです。以下の例では、新しい(少し合理的な)新しい構文を使用しているため、試してみる前に必ずPraatを更新してください(または、この回答の編集履歴の短縮バージョンを試してください)。

次に例を示します。

# Create a Table with no rows
table = Create Table with column names:
..."table", 0, "Narrative Label Midpoint Time F1 F2 F3"

for i to number_of_intervals
  # Assuming you have your Formant objects in an array named "burg"
  selectObject(burg[i])
  # Run your analysis here
  # For this example, I'm assuming values for the columns are in
  # variables called narrative$, label$, midpoint, time, f1, f2 and f3

  selectObject(table)
  Append row
  current_row = Get number of rows
  # Insert your values
  Set string value:  current_row, "Narrative", narrative$
  Set string value:  current_row, "Label", label$
  Set numeric value: current_row, "Midpoint", midpoint 
  Set numeric value: current_row, "Time", time
  Set numeric value: current_row, "F1", f1 
  Set numeric value: current_row, "F2", f2
  Set numeric value: current_row, "F3", f3
endfor

# Save it!
# Remember to select it if the table is not the active selection at
# the end of the loop
Save to comma-separated file: /path/to/file
# And then you can get rid of it
removeObject(table)

または、タブが必要な場合は、を使用できます

Save to tab-separated file: /path/to/file

このメソッドでは、列名として「Narrative#」を使用できないことに注意してください。

'l33t'の方法

または、Praatのファイルディレクティブを使用するドキュメントで説明されているように、ファイルに直接書き込みます。

sep$ = ","
# sep$ = tab$

# Create / overwrite file and write header
writeFileLine: "/path/to/file",
  ..."Narrative#" + sep$ +
  ..."Label"      + sep$ + 
  ..."Midpoint"   + sep$ +
  ..."Time"       + sep$ +
  ..."F1"         + sep$ +
  ..."F2"         + sep$ +
  ..."F3"

for i to number_of_intervals
  selectObject(burg[i])
  # Run your analysis here

  appendFileLine: "/path/to/file",
    ...narrative$        + sep$ +
    ...label$            + sep$ +
    ...string$(midpoint) + sep$ +
    ...string$(time)     + sep$ + 
    ...string$(f1)       + sep$ +
    ...string$(f2)       + sep$ +
    ...string$(f3)

endfor
于 2013-02-19T11:07:56.513 に答える
0

Praat ユーザー グループには、同様の質問に対する回答があります

于 2012-07-27T15:37:09.257 に答える