1

我有一个 praat 脚本,其中为一个对象创建了一个音高对象和一个点过程。然后将这两个与我的初始对象结合起来,返回语音报告。我只想提取某些字段的值并将它们保存在文件中,但我找不到方法。是否有可能或者我应该只生成报告然后用另一种编程语言编写脚本来提取它们?

我的脚本看起来像这样,我打算把它放在一个 for 循环中,以便为多个对象运行。

sound = selectObject: 1
pitch = To Pitch (cc)... 0.01 50 15 no 0.03 0.45 0.01 0.35 0.14 300
plus sound
pulses = To PointProcess (cc)
plus sound
plus pitch
voiceReport$ = Voice report... 0 0 50 300 1.3 1.6 0.03 0.45
4

1 回答 1

2

使用extractWord$()extractLine$()extractNumber() 字符串 函数

它们分别从字符串(在本例中为voiceReport$)中提取指定字符串之后的单词、行或数字。您可以使用该指定字符串来标识您想要的语音报告中的字段。

这是一个例子:

synth = Create SpeechSynthesizer: "English", "default"
sound = To Sound: "This is some text.", "no"
pitch = To Pitch (cc)... 0.01 50 15 no 0.03 0.45 0.01 0.35 0.14 300

selectObject: sound, pitch
pulses = To PointProcess (cc)

selectObject: sound, pulses, pitch
voiceReport$ = Voice report... 0 0 50 300 1.3 1.6 0.03 0.45

total_pulses = extractNumber(voiceReport$, "Number of pulses:")

writeInfoLine: "Found ", total_pulses, " pulses"

removeObject: synth, sound, pitch, pulses
于 2016-01-19T11:01:54.370 回答