3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TL; DR

  • Praatには知覚実験を行う機能がついている!

mfc_uipng.png

はじめに

Praatは、主に音声学で使用される音声分析、編集ソフトウェアです。音声に関する研究をしている方なら使ったことがあるかもしれません。

しかし、Praatが扱えるのは録音データだけではありません。デフォルトで知覚実験を行うための機能も備わっています

今回は、Praatの知覚実験について紹介したいと思います。

「ニッチな技術」のテーマにぴったりだったので、学生時代の記憶を引っ張り出して記事にしました。

知覚実験機能

知覚実験はどうしてもバタバタしがちです。音声刺激を1つずつカチカチ再生しながら実験参加者にExcelで入力してもらう...しかも1行ずれてしまったらやり直しです... :sob:

Praatの知覚実験はUIから作れるので、音声を流すのもクリックするボタンを表示するのもこれ1つで完結します。

mfc_uipng.png

音声刺激はランダムに流れるので、実験参加者に画面をクリックしてもらうだけで実験完了です。

mfc_selected.png

しかも終わったら結果をCSVで吐いてくれます。神

subject,stimulus,response,goodness,reactionTime
mfc,hid,i,4,7.2662999629974365
mfc,hood,u,5,3.6908531188964844
mfc,heed,e,4,2.89058518409729
mfc,hud,a,5,2.2594401836395264
mfc,heed,i,4,2.4159739017486572
mfc,hud,a,5,2.174546003341675
mfc,hood,o,4,2.1661901473999023
mfc,hid,i,4,2.455695867538452
mfc,hud,a,5,2.3374791145324707
mfc,hid,i,4,3.0031659603118896
mfc,hood,u,5,3.5072808265686035
mfc,heed,e,4,3.0435638427734375

ちょくちょく間違えてる

各列のデータは以下の通りです。

意味
subject タイトル(mfc 固定?)
stimulus 音声刺激の名前
response 実験参加者が選択した選択肢
goodness 実験参加者が選択したgoodness1
reactionTime 音声が流れてから選択肢を選ぶまでの時間[s]

実行方法

準備

実験ファイルと音声刺激ファイルを用意します。今回はリファレンスにあるサンプルを使用します。

    "ooTextFile"
    "ExperimentMFC 7"
    blankWhilePlaying? <no>
    stimuliAreSounds? <yes>
    stimulusFileNameHead = "Sounds/"
    stimulusFileNameTail = ".wav"
    stimulusCarrierBefore = "weSayTheWord"
    stimulusCarrierAfter = "again"
    stimulusInitialSilenceDuration = 0.5 seconds
    stimulusMedialSilenceDuration = 0
    stimulusFinalSilenceDuration = 0.5 seconds
    numberOfDifferentStimuli = 4
       "heed" ""
       "hid" ""
       "hood" ""
       "hud" ""
    numberOfReplicationsPerStimulus = 3
    breakAfterEvery = 0
    randomize = <PermuteBalancedNoDoublets>
    startText = "This is a listening experiment.
    After hearing a sound, choose the vowel that is most similar to what you heard.
   
    Click to start."
    runText = "Choose the vowel that you heard."
    pauseText = "You can have a short break if you like. Click to proceed."
    endText = "The experiment has finished."
    maximumNumberOfReplays = 0
    replayButton = 0 0 0 0 "" ""
    okButton = 0 0 0 0 "" ""
    oopsButton = 0 0 0 0 "" ""
    responsesAreSounds? <no> "" "" "" "" 0 0 0
    numberOfDifferentResponses = 5
       0.2 0.3 0.7 0.8 "h I d" 40 "" "i"
       0.3 0.4 0.5 0.6 "h E d" 40 "" "e"
       0.4 0.5 0.3 0.4 "h A d" 40 "" "a"
       0.5 0.6 0.5 0.6 "h O d" 40 "" "o"
       0.6 0.7 0.7 0.8 "h U d" 40 "" "u"
    numberOfGoodnessCategories = 5
       0.25 0.35 0.10 0.20 "1 (poor)" 24 ""
       0.35 0.45 0.10 0.20 "2" 24 ""
       0.45 0.55 0.10 0.20 "3" 24 ""
       0.55 0.65 0.10 0.20 "4" 24 ""
       0.65 0.75 0.10 0.20 "5 (good)" 24 ""

以下の音声刺激ファイルもあらかじめ用意しましょう(場所は実験ファイルの相対パス)。

  • Sounds/heed.wav
  • Sounds/hid.wav
  • Sounds/hood.wav
  • Sounds/hud.wav

自分の声を録音しても良いですが、手っ取り早く試したいならPraatの合成音声を使うのが楽です(「New→Text to speech synthesis」で生成器を作り、「To Sounds」で生成)。

できたら実験ファイルを「Read from file」で読み込み、「Run」で開始し実験参加者にPCを渡しましょう。

mfc_start.png

結果の出力

実験が終わったら実験のUI画面を閉じ(※Praat自体は閉じないこと!)、「Extract Result」で結果を出力します。

mfc_extract.png

続いて「Collect To Table」でテーブルオブジェクト化し、CSVファイルへ出力します。

mfc_table.png

実験ファイルの書き方

実験ファイルは独自の形式です。Praat Scriptではないので要注意。
色々設定がありますが、重要なのは以下の2つです。

音声刺激

使用する音声刺激のファイル名を指定します。

    numberOfDifferentStimuli = 4
       "heed" ""
       "hid" ""
       "hood" ""
       "hud" ""

順序は適宜ランダムにシャッフルされます。

randomize = <PermuteBalancedNoDoublets>

また、同じ刺激を何回繰り返すかも指定できます。下記の例では4刺激を3回、計12回音声が流れます。

numberOfReplicationsPerStimulus = 3

各刺激の前後に流れる音声「We say the word」「again」はここで指定しています。

    stimulusCarrierBefore = "weSayTheWord"
    stimulusCarrierAfter = "again"

ボタンの配置

ボタンの配置は以下で管理しています。上から順に音声刺激、goodnessのボタンです。
なんといってもレイアウトを自在にカスタムできるのが便利です。

    numberOfDifferentResponses = 5
       0.2 0.3 0.7 0.8 "h I d" 40 "" "i"
       0.3 0.4 0.5 0.6 "h E d" 40 "" "e"
       0.4 0.5 0.3 0.4 "h A d" 40 "" "a"
       0.5 0.6 0.5 0.6 "h O d" 40 "" "o"
       0.6 0.7 0.7 0.8 "h U d" 40 "" "u"
    numberOfGoodnessCategories = 5
       0.25 0.35 0.10 0.20 "1 (poor)" 24 ""
       0.35 0.45 0.10 0.20 "2" 24 ""
       0.45 0.55 0.10 0.20 "3" 24 ""
       0.55 0.65 0.10 0.20 "4" 24 ""
       0.65 0.75 0.10 0.20 "5 (good)" 24 ""

列は左から座標(左下が原点)、ボタンのラベル、フォントサイズ、ショートカットキー(ボタンを押す代わりにキー入力で選択可能)、対応するレスポンス(例では i を選択)です。

# left right bottom top label   fontsize shortcut response
  0.2  0.3   0.7    0.8 "h I d" 40       ""       "i"

ショートカットキーは自分で動作確認をする際に楽ができるので良さそうです。

おわりに

以上、Praatの知覚実験UIの紹介でした。本記事では取り上げられなかった高度な設定がまだまだあるので、詳細は公式リファレンスをご覧ください。

  1. 音声刺激がどれだけ良いかを採点してもらいます。リファレンスには具体的な定義が書いていないので「どれだけ自然に聞こえたか」を付けてもらっていましたが、実際は何を入れるのが良いのでしょうか...?

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?