普拉特:使用脚本删除音高并发布重新合成

时间:2019-01-02 20:28:48

标签: praat

我用Praat产生了纯音(440 Hz),并尝试使用脚本将其音调更改为277.1826309768721 Hz(中音C),然后更改为220 Hz。但是,脚本会在“删除节点”(例如Command "Remove point(s)" not available for current selection)或“发布重新合成”(Command "Publish resynthesis" not available for current selection)处崩溃,以脚本中先出现的那个为准。

以下是该脚本的两个版本,其中一个试图发布重新合成:

Create Sound as pure tone: "tone", 1, 0, 0.4, 44100, 440, 0.2, 0.01, 0.01
To Manipulation: 0.01, 75, 600
Create PitchTier: "empty", 0, 1
View & Edit
Add point... 0 277.1826309768721
selectObject: "Manipulation tone"
plusObject: "PitchTier empty"
Replace pitch tier
selectObject: "Manipulation tone"
View & Edit
Publish resynthesis

和一个不尝试发布重新合成(因为它不起作用)但尝试更改音高点位置的方法,但失败了:

Create Sound as pure tone: "tone", 1, 0, 0.4, 44100, 440, 0.2, 0.01, 0.01
To Manipulation: 0.01, 75, 600
Create PitchTier: "empty", 0, 1
View & Edit
Add point... 0 277.1826309768721
selectObject: "Manipulation tone"
plusObject: "PitchTier empty"
Replace pitch tier
selectObject: "Manipulation tone"
View & Edit
Remove point(s)
Add point at: 0, 220
selectObject: "PitchTier empty"
selectObject: "Manipulation tone"
plusObject: "PitchTier empty"
Replace pitch tier
selectObject: "Manipulation tone"
View & Edit

我的最终目标是编写一个脚本,该脚本带有一个Manipulation对象,生成具有所有钢琴键频率(从小C(130.8127826502993 Hz)到B5(987.7666025122483 Hz)的所有钢琴键频率的单调版本的声音,并将它们保存到文件夹中。如果脚本中不允许删除基音点或发布重新合成,则无法完成此操作。

是的,我确实通过编辑Manipulation对象本身来尝试这种方法,但是由于它不起作用,所以我转而使用创建Pitch层的方法。

顺便说一句,我也尝试过这样的事情:

s$ = selected$("Sound")
m$ = selected$("Manipulation")
selectObject: s$
endtime = Get end time
selectObjcet: m$
Remove points between... 0 endtime

开始使用,但这即使我选择了名为No object named "tone"的声音和操作也导致了tone错误。

1 个答案:

答案 0 :(得分:0)

好的,再多尝试一下,我设法创建了一个超级丑陋的解决方法。以下脚本可以实现我想要的功能,但是它也将原始操作对象重命名为“ tone”,以便将来能够引用它。我不确定如果您已经打开名为“ tone”的对象会发生什么……要小心。

所有频率都是硬编码的。因此,这样做是要用一个操作对象将其重命名为“音调”,将其音高移至C3的音高,将重新合成保存为c3.wav,将音高移至C#3,将重新合成的内容保存为{ {1}},将音高移到D3,将其保存到c-sharp3.wav ...一直到B5。 d3.wav需要替换为所需的目标文件夹。

<folder_path>