跳转至

关于setParam插件的开发方法

原文链接(日语) 作者:nwp8861


setParam 自动推定用插件开发指南

(version 3.0-b150712以后用)

2013/01/23 作成

2015/07/12 修订


此文档为UTAU音源原音设定软件setParam的插件开发相关信息说明。

setParam的插件于ver.2.0-b130130被开发,此后于ver.3.0-b150712进行变更,以下三种类型的插件得以被制作。

(a) 更新全部数据的插件(自动推定等)

(b) 改变波形窗当前显示数据的插件

(c) 改变参数一览表中多选的数据的插件


插件安装路径

在“setParam.exe所在文件夹\plugins\”下创建文件夹,并在其中放置所开发的插件程序及后述的plugin.txt。

插件执行过程

插件执行按照如下顺序被处理。

1) setParam创建名为“setParam.exe所在\plugins\inParam.txt”的文本文件。

此文件内容如下所示。

1
2
3
4
5
6
7
8
第1行:要处理的音源文件夹的绝对路径。
第2行:setParam〜插件间数据传递用原音设定文件的绝对路径。
第3行:F0的提取间隔(单位=秒)。
第4行:响度的提取间隔(单位=秒)。
第5行:setParam的波形窗口中当前显示的数据的行号。
 以文件首行作为1进行计数。
第6行:setParam的参数一览表中当前选择的单元格的行号。
 多选时以逗号分隔列举全部行号。

inParam.txt的内容示例如下所示。

1
2
3
4
5
6
C:/voicebank/example
C:/voicebank/example/oto-autoEstimation.ini
0.01
0.02
5
3,4,5

第1、2行的路径格式为与Windows不同的Tcl/Tk格式。若Windows记为“C:\foo\bar”的文件夹,Tcl/Tk则记作“C:/foo/bar”(即日元符号替换为斜杠)。

译注:在日语编码中反斜杠(\)被映射为日元符号(¥),因而其他编码中应为“反斜杠替换为斜杠”。

2) setParam将现有原音设定保存至inParam.txt第二行所示文件夹。

3) 插件的设定文件(plugin.txt)中指定有“needF0=1”时对各wav文件的F0文件进行输出,指定有“needPower=1”时对各wav文件的响度文件进行输出。

4) 启动插件。插件读取inParam.txt等,进行原音设定,用结果覆盖inParam.txt第二行所示文件并终止退出。

5) setParam读取inParam.txt第二行所示文件。

此时,取得数据的方式(全部取得或仅取得相应行)随插件设定文件(plugin.txt)中指定的插件类型而改变。

关于plugin.txt

setParam启动时会搜索“setParam.exe所在文件夹\plugins*\plugin.txt”并添加到菜单中。

plugin.txt中记有以下项目,必须项目为“name=”“execute=”,其他项目请在必要时指定(不需要的行请全部省略)。

1
2
3
4
5
6
7
  name=単独音自動推定:hogehoge ← setParam中显示的插件名
  execute=hogehoge.exe ← 插件的执行命令
  argv=-a %S -b %n ← 插件执行时传递的参数(详见后文)
  needF0=0 ← 若需要setParam的F0数据则设置为1(详见后文)
  F0unit=semitone ← 指定F0值的单位(Hz或semitone)
  needPower=0 ← 若需要setParam的响度数据则设置为1(详见后文)
  edit=all ← 插件的操作类型(详见后文)

关于plugin.txt的argv

在plugin.txt的“argv=”中指定的字符串会在运行时作为参数传递给插件。若在参数字符串中指定以下记号,执行时会传递展开后的对应字符串。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  %S  要处理的音源文件夹的绝对路径
  %s  要处理的音源文件夹的绝对路径
     保留了与旧版插件的向后兼容性路径含有空格时字符串会被分解
  %R  setParam插件间数据传递用原音设定文件的绝对路径
  %r  setParam插件间数据传递用原音设定文件的绝对路径
     保留了与旧版插件的向后兼容性路径含有空格时字符串会被分解
  %f  F0的提取间隔单位=)。
  %p  响度的提取间隔单位=)。
  %n  当前显示的波形为数据中转原音设定文件中的行数
  %l  当前选择的各数据为中转原音设定文件中的行数列表
     例如若选中第2行第4行即为2,3,4的逗号分隔字符串

并且,%S、%s、%R、%r的路径格式为与Windows不同的Tcl/Tk格式。若Windows记为“C:\foo\bar”的文件夹,Tcl/Tk则记作“C:/foo/bar”(即日元符号替换为斜杠)。

译注:在日语编码中反斜杠(\)被映射为日元符号(¥),因而其他编码中应为“反斜杠替换为斜杠”。

以及音源路径名如“c:/Program Files/”一样含有空格的情况下,在%s和%r中,会将"c:/Program"与"Files/"两个字符串分开处理,需要加以注意。因而尽可能使用%S和%R读取inParam.txt的第1、2行大概会更好。

关于plugin.txt的needF0、F0unit

如在plugin.txt中写入“needF0=1”,setParam会在插件执行时提取各音频文件的F0数据并输出至文本文件。

・F0文件名:是wav文件的扩展名替换为“.setParam-f0”。(例:“あ.wav”的F0文件为“あ.setParam-f0”)

・F0文件的保存位置:与wav文件相同的文件夹。

・文件内容:   F0值一行一数据的向下连续。

F0值的単位可以使用plugin.txt的"F0unit"指定。

其他F0提取用参数则使用setParam显示F0时所用的值。

关于plugin.txt的needPower

如在plugin.txt中写入“needPower=1”,setParam会在插件执行时提取各音频文件的响度数据并输出至文本文件。

・响度文件名:是wav文件的扩展名替换为“.setParam-power”。(例:“あ.wav”的响度文件为“あ.setParam-power”)

・响度文件的保存位置:与wav文件相同的文件夹。

・文件内容:   响度值一行一数据的向下连续。

响度提取用参数使用setParam显示响度时所用的值。

值的単位为dB。

关于plugin.txt的edit

按开发的插件的行为指定以下任一对应项。

・若为仅更新setParam波形窗中当前显示数据的插件  → edit=single

・若为仅更新setParam参数一览表中选择范围的行的插件  → edit=region

・若为更新全部数据的插件  → edit=all

读取插件的执行结果时,setParam会对应于edit的值,切换仅读取相应行抑或全部重新读取,如下例。此时,取得数据的方式(全部取得或仅取得相应行)随插件设定文件(plugin.txt)中指定的插件类型而改变。

例1:oto.ini第三行被显示时执行edit=single的插件的情况下,setParam会丢弃结果文件开头两行仅取得第三行。

例2:oto.ini的第3、4、7行数据在一览表中被显示时执行edit=region的插件的情况下,setParam会丢弃结果文件开头2行取得第3〜7行。

例3:执行edit=all的插件时,setParam会将结果文件全部取得。

其他

插件开发方法今后仍有变更的可能性。如有“想从setParam侧接收此数据”、“想向setParam侧发送此数据”等需求,请在博客的评论区等处进行告知,不胜感激。


最后更新: 2022-05-18