無音区間の挿入

このページで使うサンプルファイルは以下の通りです。右上に表示されるアイコンをクリックするとGoogle Driveを開くことができます。

日本語の「型」と「買った」は音声学的にどう異なるでしょうか?「型」の音声を加工したら,「買った」に近づけることができるでしょうか?

まず初めに,「型」と「買った」の音声の違いをPraat上で確認してみましょう。特に注目すべきは,/t/の閉鎖区間の長さです。どうなっているでしょうか?

  • サンプル音声:kata_katta.wav

一般に,促音の直後が閉鎖音である場合,促音が入ると閉鎖時間が長くなる傾向にあります。このことをふまえると,「型」の/t/の閉鎖区間を長くするような加工を加えることで,「買った」に近づけられるという予測が成り立ちます。また,閉鎖区間の長さを様々に変え,「型」と「買った」のどちらに聞こえるかという実験ができるでしょう。

閉鎖区間の長さを変えるという加工は,Praat上で以下の手順で行うことができます。

  1. A:「型」の音声を[ka],B: [t]の閉鎖区間,C: [t]の破裂以降という三つに切り分ける

  2. Bを任意の長さの無音と置き換える

  3. A,無音,Cをつなげる

(1)音声を切り分ける

まず,「型」のSoundオブジェクトを三つのパートに切り分けてみましょう。切り分ける方法は様々にありますが,ここではTextGridを用いた方法を説明します。

「型」のSoundに対応させるかたちで,一つのInterval TierからなるTextGridを作ってください(TextGridの作り方については以前のページを参照)。ここでは,「型」の[k]の始端,第一モーラの母音の終端(閉鎖区間の始端),閉鎖区間の終端([t]の破裂の始端),第二モーラの母音の終端にboundaryを入れます。そして,[k]の始端から第一モーラの母音の終端までの区間にA,閉鎖区間にB,[t]の破裂から第二モーラの終端までにCというラベルを入力しましょう。(ラベル名は例であって,この通りでなくてもかまいません。)

参考:Move to nearest zero crossing

切り分けるときの境界は,多くの場合,zero crossing(波形の振幅がゼロとなるところ)と合わせるのが理想的です。振幅がゼロでないところで切った場合,プツッという音が聞こえてしまうことがあるからです。境界をzero crossingに合わせるためには,SoundとTextGridを開き任意のboundaryを選択した状態で,Boundary > Move to nearest zero crossingを実行します。そうすると,選択したboundaryが最も近いzero crossingに移動します。

次に,TextGridにしたがってSoundを切り分けます。Sound editorはいったん閉じてかまいません。Objectウィンドウ上で当該のSoundとTextGridを選択し,右側に現れるコマンドからExtract > Extract non-empty intervalsを実行します。そうすると,A,B,Cという三つのSoundオブジェクトが現れます。

(2)無音をつくる

次に,Bと置き換える無音を作ります。オブジェクトウィンドウ上で,上のメニューからNew > Sound > Create Sound from formula... を実行します。数式(formula)を入力する画面が現れるので,formulaのところに(既に何か書いてあったら消した上で)0と入力しましょう。無音の波形は y = 0 で表せるので,このように入力するのです。100 msの無音を作るのであれば,End timeに0.1と入力します。Nameは分かりやすいようにsilence100としましょう(下図参照)。

同様にして,200 ms,300 msなど様々な長さの無音を作ることができます。

(3)Soundオブジェクトをつなげる

次に,A,無音,Cをつなげます。Soundオブジェクトをつなげる場合,対象となる複数のSoundオブジェクトを選択した上で,右側に現れるコマンドからCombine > Concatenateを実行します。ただし,オブジェクトリスト上の配列順につながることになります。したがって,順番を変えるためには工夫が必要です。

たとえば,次のような手順をとることで,意図した順番につなげることができます。まず,AのSoundオブジェクトを選択し,下側のメニューからCopy...を実行します。同様に,既に作成してある無音とCもコピーします。こうすることで,A,無音,Cの順にオブジェクトが並ぶので,これらを選択してConcatenateすることで,三つのオブジェクトを意図したとおりにつなげることができます。

参考:スクリプトを使って刺激の作成を自動化する

上に書いたような作業を手動で行っていくことで,様々な刺激をつくることができます。ただ,例えば10 msずつ長くした刺激を20個つくる場合,上の作業を20回繰り返すのは面倒ですし,また間違いを起こしやすくなります。このような場合に,スクリプト機能を活用することができます。スクリプトについては,別のページで説明します。