关于#python#的问题:praat自动添加边界条河文本/我用的mac,那个sppas好像只有win版

请问praat自动添加边界条和textgrid内的文本信息,应该用什么脚本呢?
或者是用什么sppas是吗?
我用的mac,那个sppas好像只有win版?

该回答引用GPTᴼᴾᴱᴺᴬᴵ
您可以使用Praat脚本来实现自动添加边界条和文本信息到TextGrid中。以下是一个简单的Praat脚本示例,其中添加了两个边界条和三个文本标注:

# 打开音频文件
sound = Read from file "sound.wav"

# 创建TextGrid对象
tg = Create TextGrid from sound
tg.name$ = "my_textgrid"

# 添加两个边界条
tg.AddTier: "Boundaries"
tg.SetTierName: 1, "my_boundary_tier"
tg.InsertBoundary: 1, 0.5
tg.InsertBoundary: 1, 1.5

# 添加三个文本标注
tg.AddTier: "Words"
tg.SetTierName: 2, "my_text_tier"
tg.InsertText: 2, 0.25, 0.75, "word1"
tg.InsertText: 2, 0.75, 1.25, "word2"
tg.InsertText: 2, 1.25, 1.75, "word3"

# 保存TextGrid文件
Write to TextGrid file "my_textgrid.TextGrid"


关于sppas,它是一款用于语音和文本数据分析的软件,但是目前似乎只有Windows版本。您可以考虑使用其他类似的软件,如Praat、ELAN等。

参考GPT的回答和自己的思路,如果您需要在Praat中自动添加边界和文本信息,您可以使用Praat自身的脚本语言Praat Script。以下是一些可能有用的脚本:

1.自动添加边界

# 读取音频文件
sound = ReadSoundFile("example.wav")
# 计算信号的起始和结束时间
start = GetStartTime(sound)
end = GetEndTime(sound)
# 添加边界
sound = InsertBoundary(0, start) + sound + InsertBoundary(end, end+0.5)
# 保存处理后的音频文件
WriteSoundFile(sound, "example_with_boundaries.wav", "WAV")

2.自动添加文本信息

# 读取TextGrid文件
tg = ReadTextFile("example.TextGrid")
# 获取Tier对象
tier = tg.GetTier(1)
# 添加标注信息
tier.AddInterval(start, end, "example_label")
# 保存TextGrid文件
tg.Write("example_with_labels.TextGrid")

Praat 脚本可以在 macOS 上运行。Praat 是跨平台的软件,可以在 Windows、macOS 和 Linux 等操作系统上运行。
需要注意的是,Praat脚本语言是一种独立的编程语言,与操作系统无关。因此,您编写的Praat脚本在不同操作系统上都应该能够正常运行。但是,您需要确保在不同操作系统上使用的Praat软件版本是一致的,以避免可能出现的兼容性问题。

回答不易,还请采纳!!!

该回答引用ChatGPT

如有疑问,可以回复我!
对于在Praat中添加边界条和文本信息的脚本,可以使用Praat的脚本编程语言,Praat脚本可以直接在Praat软件中编写和运行。以下是一个示例脚本,可以自动添加边界条和文本信息到一个wav音频文件中:


form AddTextGridToSoundFile
    sentence AudioFile ""
    sentence TextGridFile ""
endform

Read from file: AudioFile$
Read from file: TextGridFile$

sound = Read from file: AudioFile$
textgrid = Read from file: TextGridFile$

# 添加边界条
sound = To Manipulation: sound
sound = Get resynthesized sound: sound

# 获取文本信息
for i from 1 to number of intervals
    label$ = Get label of interval: i
    start = Get starting point: i
    end = Get end point: i
    Print: label$, start, end
endfor

# 将文本信息写入新的TextGrid文件
new_textgrid = Create TextGrid: "new_textgrid", 0, Get total duration: sound
for i from 1 to number of intervals
    label$ = Get label of interval: i
    start = Get starting point: i
    end = Get end point: i
    Insert boundary: start, new_textgrid
    Insert boundary: end, new_textgrid
    Set interval text: i, label$, new_textgrid
endfor

Save as text file: new_textgrid$, new_textgrid

该脚本需要用户提供音频文件和TextGrid文件的路径。在脚本运行后,它将自动添加边界条并提取文本信息,并将其写入新的TextGrid文件。

关于SPPAS,它是一个跨平台的语音分析软件,但是它的Mac版本似乎已经停止更新。您可以尝试使用其他类似的跨平台语音分析软件,例如ELAN或Praat,它们都提供Mac版本。

参考GPT和自己的思路:对于Praat自动添加边界和文本信息的问题,可以使用Praat脚本实现。以下是一个示例脚本,可以自动在Praat中打开音频文件并创建一个新的TextGrid对象,然后添加边界和文本信息:

# 首先打开音频文件
sound = ReadSound("path/to/soundfile.wav")

# 创建一个新的TextGrid对象
tg = NewTextGrid()
tg.name = "My TextGrid"

# 添加边界
for i in range(1, 5):
    point = CreatePointTier("Boundary %d" % i, 0, sound.xmax)
    point.AddPoint(i, i)
    tg.AddTier(point)

# 添加文本信息
interval = CreateIntervalTier("My Tier", 0, sound.xmax)
interval.AddInterval(1, 2, "hello")
interval.AddInterval(3, 4, "world")
tg.AddTier(interval)

# 将TextGrid对象保存到文件
tg.Write("path/to/textgridfile.TextGrid")

对于SPPAS的问题,确实只有Windows版本。不过,SPPAS是基于Python编写的,因此您可以在Mac上使用Python编写自己的脚本来完成类似的任务。另外,您也可以考虑使用其他基于Python的语音分析库,例如Praatio或Pyannote。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
您可以使用Python中的Praat-Parselmouth模块来自动添加边界条和文本信息到Praat TextGrid。以下是示例代码:

import parselmouth

# 加载音频文件
snd = parselmouth.Sound("sound.wav")

# 创建并初始化TextGrid对象
tg = parselmouth.TextGrid()
tg.name = "New TextGrid"
tg.xmin = snd.xmin
tg.xmax = snd.xmax

# 添加层级
tier1 = parselmouth.IntervalTier(name="tier1", xmin=snd.xmin, xmax=snd.xmax)
tg.append(tier1)

# 根据时间范围创建区间
interval1 = parselmouth.Interval(start_time=2.5, end_time=5, text="example")
tier1.add_interval(interval1)

# 保存TextGrid文件
tg.save("output.TextGrid", format="textgrid")

上面的代码利用Parselmouth模块加载音频文件,创建并初始化TextGrid对象,并在其上添加层级和区间。您可以根据自己的需求修改代码,例如更改层级名称,改变时间范围等。

至于sppas,由于它只有Windows版,如果您使用的是Mac,可以考虑使用Praat-Parselmouth模块。
如果我的回答解决了您的问题,请采纳!