中文說明--PRAAT 软件的使用方法
Praat-1401 使用說明
(2004/01/020)
一.
(1)
此時選擇“Sample-rate”,擊 Record 開始發音,然後擊 stop 去停止錄音;選擇 Play 聽已
錄語音,不滿意,重錄;
錄音:主功能表(Objects)上選擇“New”;----“Record sound”
錄音、存語音信號文件(New)
選擇 Left to List,在主功能表的空白處就出現一個文件 Sound Left, 你可選擇
Rename 去修改語音檔案名,但 Sound 是文件格式標記,不能改;
注意:當你不能利用 New 來錄音時,可選用你 Windows 中的“錄音機”功能來錄
音並保存爲 WAV 格式:
開始——程式——附件——娛樂——錄音機;
錄音機文件——屬性:11K 16 位 單聲道 OK!
按紅色鈕開始錄音,按黑色鈕停止錄音;
文件——保存(指定路徑和檔案名)
(2)在 Praat 中保存語音文件:
左框主功能表中(Objects),選擇 write 中任意中格式,但通用格式爲 WAV ; 指定路
图形窗(1)中的 Edit, 可以編輯選擇部分信號並存文件;
用左框主功能表中的 read 來調出信號文件;
左框主功能表中右手邊功能表,選擇 Edit, 就會出現一個图形窗(1),上
徑和檔案名。
二. 語音標注(Label&segment-analysis)
(1)
(2)
部爲波形,下部爲语图,在此窗中的主功能表 View,可加選 pitch, formant, energy;
(3)
(4)
左框主功能表中右手邊功能表,選擇 Label&segment-analyse,
(5)
出現一個需要選擇的文字框,選擇 to TextGrid, 填入 tier name, point
tier;就會産生一個 TextGrid 的新文件,擊右手邊的 Edit,就會出現一個文本框,然後與波
形窗對齊,在文本框内,用滑鼠選擇音節段,或聲母,韻母就可用音標符號標注。
(6)
標注完成後,在此框中的主功能表 file—write textgrid to text file,
選擇你存入的地址和名字,就完成了。此 text file 可以在 Praat 環境中,using “edit”
to display plotter 出來, and open this file on Microsoft Word to display digital
text.
三.音高(Pitch)分析(包括三維语图和共振峰歷程分析):
調出已保存語音文件:Read---Read from file(Sound xxx),使用 edit 去
(1)
畫出三維语图(show spectrogram)和音高曲線(show pitch), 記錄下要取消的部分(在後面
的 excel 中)的起點和終點時間;
(2)
第一種比較複雜然而比較多用途的方法如下:
修正基音標記:先用 praat 標記周期(periodicity--- to pointprocess),此
時出現一個 PointProcess 文件[1],使用 Edit, 出現一個基音周期調整框。若需要的話, 可
人工檢查修正這些標記, 方法是:用滑鼠去框住不要(亂的)部分,在子功能表上選擇
Point---Remove point;
完成以後用 praat 把周期文件轉化成音高文件(to pitchtier)(,此時在 object
列表框空白處出現一個 PitchTier 的文件。這個文件可使用 Edit 命令畫出一個音高
(Pitch)隨時間變化的图形, F0(t)。也能用滑鼠去圈定一段不要的基頻,Point—remove
就能取消這些點;可滑動滑鼠去讀出每個样点上的音高數值;
然 後 返 回 到 功 能 表 ( object ) 去 保 存 一 個 文 字 檔 案 : Write---to headless
spreadsheet file。 音高文件本身是一個文字檔案(F0 資料),可以用 Excel 打開這個文
件,首先按照先前記錄下的待取消部分的時間,將其時間和數據”清除”,這樣就能使音節之
間有效的音高曲綫得到分離; 然後把基頻(F0)數據全部換算成半音或五度制。最後用 Excel
作成图表; 辦法是:
[1] 五度制转换:激活 C1(EXCEL 表中第 C 列,第一行, 這是假定在 B 列中存放
了 F0 数据,計算結果將放在 C 列的第一行), 調出函數 log10, 在下面空白處打入 B1/f1,
f1 可設為當前 F0 的最低值;按一下 enter, 將鼠標放到公式結尾處,打入 *16.61, 按一
下鍵盤上的 enter 鍵,在 C1 格内就出現五度值;
* B1 是存放音高數據的列的第一行數據
[2] copy C1, 再激活全部 C 列,點 paste, C 列 就全部置換成五度值了。
[3] 激活 C 列,點“制图”,選“折线”,“下一步”,到“4 步驟 3”,點“數據表”,再選中
“顯示數據表”,點一下“完成”。
主表 object 中選擇 Down to table of real, 主表中出現一個同名的文件, 然後,
Draw, 在副表中會顯示全部音高值(爲此,先在副表中用鼠標畫出一個窗,以便容納全部音高
數據), 使用 copy to clipboard, 將數據貼到 word 文當中去.
(3 ) 另一種是分析音高的簡單方法:
在調出語音文件後,Praat 使用 Edit 畫出既有語音波形,又有三維语图、音
高曲線、共振峰和音強等,這些語音聲學特性是否需要顯示在图上,可有自己選擇:啟動
Show ,就可選中或關閉某項聲學特性。
爲了突出語音部分,可以先整理波形,剪切掉無用部分;
只显示語圖和音高曲線(show spectrogram; show pitch);
選擇语图中音高曲線與母音重叠部分,用滑鼠測量曲線的起始點音高值、拐點
(如有必要的話)和終點;
將每個音節的音高值填入 EXCEL 表,每個音節兩個或三個 F0, 從上而下排
列,音節之間空一格;(建議測量三點)
如需要的話,在 EXCEL 表上將 F0 轉換成半音或五度值;然後就可以作图。辦
法如下:
[1] 五度制轉換:激活 C1(EXCEL 表中第 C 列,第一行)(假定將計算結果放入 C1), 調出
函數 log10(插入—函數—三角函數—log10), 在下面空白處打入 B1/f1, f1 可設為當前 F0
的最低值(或任意值);按一下 enter, 將鼠標放到公式結尾處,打入 *16.61, 按一下鍵盤
上的 enter 鍵,在 C1 格内就出現五度值;
* B1 是存放音高數據的列的第一行
[2] copy C1, 激活全部 C 列,點 paste, C 列 就全部置換成五度值了。
[3] 激活 C 列,點“製圖”,選“折線”,“下一步”,到“4 步驟 3”,點“數據表”,再選中
“顯示數據表”,點一下“完成”。
請你分析声调:
專
麻
古
五
對
大
第
百 白
四.语图分析和元音共振峰數據提取:
1.在主表(objective)中讀出(read)一個聲音文件(sound file); 並聽語音回放 play;
2.在主表中選擇 formant, 副表設置一 View,主表選擇 Draw—Speckle;
3.在主表中選擇”Down to formant tier”; next to “Down to Table of real”.
此時主表中顯示一”Table of real ……(file name)”, 接著在副表中設一 View;
4.在主表中選擇 Draw---Draw as number---free, 此時在 View 中列出全部有效的共振峰數
據;
5.可以在 Excel 中打開 Table of real 作爲一個被儲存的 PostScript 文件;
6.副表中的共振峰數據即可以 Write to Clipboad, 也可以打印(Print)出數據;
7.讀出光標點四個共振峰數據: 在子表的三維語圖上選擇一個時刻(Target Point), 然後
選擇 Formant—Formant report, 即可得到所要的共振峰讀數;
8. 二 維 功 率 譜 : 在 子 表 的 三 維 語 圖 上 選 擇 一 個 時 刻 (Target Point), 然 後 選 擇
spectrum---view spectral slice.
请问,为什么要 *16.61?
5 / LOG(2) = 16.6096404744368
那是把每倍频程看成是 5 度的算法。
12 / LOG(2) = 39.8631371386483
那是把每倍频程看成是 12 半音的算法。
建议使用半音的算法。
D = 5 lg ( f / fr ) / lg 2
st = 12 lg ( f / fr ) / lg 2
式中 fr 是参考频率。
那个 D 式,包括 16.61 的始作俑者是本人。那是 1970-1980 年代的需要。北大 80 周年
校庆中文系学术论坛上我首次提出 D 式(1979)。
对于国际交流来说,还是用 st (半音,semitone)更好。
如何求得基音同步标记
在 PSOLA 中基音同步标记的求取是很重要的步骤,我想请问各位高手:应该如何求取基音
同步标记。能否提供一些可行的算法。哪里能够下载可参考的程序。谢谢!
The following is a summary I wrote in another place. Just copy it here, hope it's helpful.
QUOTE:
You are right about the importance of pitch marks. When I build a TTS corpus, I d
id the following:
1) Prepare texts for recording. You have to transcribe the text into phonetic symbol
s (such as pinyin), considering the phoneme coverage and balance, the prosodic co
verage,
2) Record sound pressure and laryngograph signals simultaneously for the texts. Th
e laryngograph signal
is optional, but it helps to determine the GCI (glottal closure
instant) of the speech.
3) Force the speech signal to be aligned with phonetic transcriptions. Alignment err
ors have to be checked and corrected. Maybe some sentences have to be re-record
ed.
4) Generate pitch marks. Pitch marks are usually assigned at each GCI detected fro
m the signal by certain algrithm. The marks might need to be mannually checked a
nd corrected in case the GCI detection algrithm doesn't work well. The unvoice seg
ements in the speech also need false "pitch" marks in order to make PSOLA work.
5) Generate the TTS inventory. The speech signals, pitch marks, and phonetic trans
criptions are indexed and stored in some database. The synthesizer will retrieve the
database and concatenate segments into sentences.
**Note: PSOLA is a patent of France Télécom. You could make a PSOLA-like synthe
sizer, but couldn't use the PSOLA algrithm for free.
用 PRAAT SCRIPT 语言实现等时间比例提取基频
值
(../index.htm../index.htmdispbbs.asp?boardid=1&rootid=41975&id=41975)
-- 作者:清凉山人
-- 发布时间:2005-12-20 20:32:53
--
[讨论]用 PRAAT
SCRIPT 语言实现等时间比例提取基频值
用 PRAAT SCRIPT 语言实现等时间比例提取基频值
看到有人问起如何用 Praat 软件实现等时间比例来提取不定时长音节的基频值,如将不同时长的每个音节都提取出 10 个等距离的基频值来。我
特写下如下 Script 语言以供参考:
--------------------------------------------------------------
# name$表示声音文件名,请首先选择您要分析的声音
name$= selected$ ("Sound")
#注释:以下分析基频,可以修改音域上限 f0Max 和音域下限 f0Min
f0Max=250
f0Min=50
select Sound 'name$'
To Pitch... 0.01 'f0Min' 'f0Max'
#注释:以下暂停以等待使用者进行基频修改,如果不需要修改,直接按 continue 即可,如果修改则等到修改好并将 Pitch 窗口关闭之后按
continue 即可,
pause 是否需要调整基频数据?
#打开 Pitch 窗口供您选择您要采点的区间
select Pitch 'name$'
Edit
editor Pitch 'name$'
pause 请选择待提取的基频数据区间:
a= Get begin of selection
b= Get end of selection
# dianNum 表示在选定的区间内基频采样点的数目,可以自己改变。
dianNum= 10
c=('b'-'a')/('dianNum'-1)
tempposition= 'a'
# newfilename$表示文件名,该文件用来存放提取出来的数据,可以自己更改。
newfilename$="c:/temp.txt"
filedelete 'newfilename$'
#以下是数据采样过程,提取出来基频数据及其时间点的数据保存在临时文件(c:/temp.txt)中。
for i from 1 to 'dianNum'
Move cursor to... 'tempposition'
pitchvalue = Get pitch
fileappend 'newfilename$' 'tempposition'
fileappend 'newfilename$' ,
fileappend 'newfilename$' 'pitchvalue'
fileappend 'newfilename$' ;
tempposition='tempposition'+'c'
endfor
endeditor
-----------------------------------------------------------------------
使用说明:
1、打开 Praat 程序,新建一个 Script 文件,将上段语句拷贝进去;
2、从 Praat Object 主窗口中选择一个声音文件;
3、从 Script 窗口中按 Run 加以运行;
4、按照提示进行接下来的操作;
5、从数据文件中获得您需要的数据,默认条件下为“c:/temp.txt”文件。
以上是我从网上下载来的。
-- 作者:清凉山人
-- 发布时间:2005-12-20 21:23:54
--
我们对它略作改动:
# name$表示声音文件名,请首先选择您要分析的声音
name$= selected$ ("Sound")
#注释:以下分析基频,可以修改音域上限 f0Max 和音域下限 f0Min
f0Max=250
f0Min=50
select Sound 'name$'
To Pitch... 0.01 'f0Min' 'f0Max'
#注释:以下暂停以等待使用者进行基频修改,如果不需要修改,直接按 continue 即可,如果修改则等到修改好并将 Pitch 窗口关闭之后按
continue 即可,
pause 是否需要调整基频数据?
#打开 Pitch 窗口供您选择您要采点的区间
select Pitch 'name$'
Edit
editor Pitch 'name$'
pause 请选择待提取的基频数据区间:
a= Get begin of selection
b= Get end of selection
# dianNum 表示在选定的区间内基频采样点的数目,可以自己改变。
dianNum= 21
c=('b'-'a')/('dianNum'-1)
tempposition= 'a'
# newfilename$表示文件名,该文件用来存放提取出来的数据,可以自己更改。
newfilename$="c:/temp.txt"
filedelete 'newfilename$'
#以下是数据采样过程,提取出来基频数据及其时间点的数据保存在临时文件(c:/temp.txt)中。
for i from 1 to 'dianNum'
Move cursor to... 'tempposition'
pitchvalue = Get pitch
#fileappend 'newfilename$' 'tempposition'
#fileappend 'newfilename$' ,
fileappend 'newfilename$' 'pitchvalue'
fileappend 'newfilename$' ;
tempposition='tempposition'+'c'
endfor
endeditor
这是一个 praat 的 user group
http://uk.groups.yahoo.com/group/praat-users/
入门教程 3.2. 定制三维语图
使用 Spectrogram(三维语图)选单下的 Spectrogram settings...(三维语图设置)命令,可以设定三维语图
的计算方法和显示方式。这些设定在整个 Praat 会话期间都将保留。所有设定都有其标准值(所谓“出厂
设定”),只要按一下 Standards(标准设定)按钮就会完全恢复。
View range(显示范围) (Hz)
要显示的频率范围。标准值是底部 0 Hz 而顶部 5000 Hz。如果最高频率高于声音的
Nyquist 频率(即其采样频率的一半),则三维语图中会有部分数值为 0,高出的频
率上将是一片空白。用 44100 Hz 的采样频率录一段声音并将显示范围设为 0 Hz 至
25000 Hz 就能看到这种现象。
Window length(时窗长度)
分析时窗的长度。如果设为 0.005 秒(标准值),Praat 将取每一帧中点前后各 0.0025
秒间的一段作那一帧的时窗长度(对于 Gaussian(高斯型)时窗,Praat 实际上是要多
取的)。时窗长度决定声谱分析的带宽——简单正弦波的三维语图中水平线的宽度
(如下)。对于 Gaussian 时窗,-3 dB 上的带宽等于 2*sqrt(6*ln(2))/(π*时窗长度),即
1.2982804 / 时窗长度。想要得到“宽带”三维语图(带宽 260 Hz)的话,只要保留 5
毫秒的时窗长度标准值就好;而要得到“窄带”三维语图(带宽 43 Hz)的话,请将其
设为 30 毫秒(0.03 秒)。其他时窗形状,取值略作调整即可。
Dynamic range(动态范围) (dB)
所有比从最大值向下减去动态范围dB 数之后的值还要低的值(可能经过了动态压
缩,参见 Advanced spectrogram settings...(高级三维语图设置))都将绘制为空白。范
围当中的值则为相应的灰色斑纹。这就是说,如果三维语图最高峰的高度在 30 dB/Hz,
而动态范围是 50 dB(即标准值),那么凡低于-20 dB/Hz 的值都将绘制为空白,同时
-20 dB/Hz 与 30 dB/Hz 之间的便都将绘制为不同的灰色斑纹。
带宽
想要了解时窗长度如何影响带宽的话,请先创建一条 1000 Hz 的正弦波——使用 Create Sound...(创建声
音)命令,输入 Formula(算式):1/2 * sin (2*pi*1000*x),并单击 Edit(编辑)按钮。三维语图
上有一条水平方向的黑带。然后改变三维语图设置中时窗长度一项,可以看到线条的粗细怎样变化:时窗
长度越大,线条越细。显然,分析时窗包含的波的周期越多,三维语图对波的频率的分辨就越精确。
如果特别想看清这里的差异,只要创建一条由 1000 和 1200 Hz 正弦波叠加成的波。算式为:1/4 * sin
(2*pi*1000*x) + 1/4 * sin (2*pi*1200*x)。您将在编辑器中看到,如果是较短的分析时
窗(5 毫秒),就是单独一条粗带,而如果是较长的分析时窗(30 毫秒),则分成两条带呈现。显然,分
析时窗越长,频率的解析度越高。
既然如此,为什么不总是用长的分析时窗就得了呢?答案很简单:长时窗的时间解析度太糟了。想要认识
这一点,只要创建一段由两条正弦波和两个很短的“咔嗒”噪声复合成的声音。算式为:
0.02*(sin(2*pi*1000*x)+sin(2*pi*1200*x)) + (col=10000)+(col=10200)。只
要查看这段声音就能发现,长的分析时窗会让那两声“咔嗒”恰好重叠,而短的分析时窗会让那两条正弦
波重叠。显而易见,时间解析度和频率解析度之间存在一个平衡。不可能取得时间和频率两方面同时精确。
高级设置
请使用 Spectrum(声谱)选单中的 Advanced spectrogram settings...(高级三维语图设置)命令。
入门教程 8.1. 音高的变换
想要修改现存 Sound(声音)对象的音高曲线,只要选中这段声音并单击 To Manipulation(生成变换)按钮(译
者注:该命令按钮上的文字实际为 To Manipulation...,原文遗漏了...)。列表中将出现一个
Manipulation(变换)对象。然后单击 Edit(编辑)按钮打开 ManipulationEditor(变换编辑器),在这里,音
高曲线(实际是 PitchTier(音高层叠)对象)表示为一系列粗圆点。如果需要减少圆点数目,请执行 Pitch(音
高)选单下的 Stylize pitch (2 st)(整理音高(2 半音))命令,这样会更容易用鼠标拖曳时间-音高区域
上的圆点。
只要单击窗口下方矩形按钮(或选择 View(查看)选单下任一 Play(播放)命令),就可以听到修改过的声音。
按住 Shift 键的同时单击,则可听到原来的声音。