RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 48|回复: 0

语音(新)

 关闭 [复制链接]
发表于 2018-4-20 14:56:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
语音(翻译:被诅咒的章鱼)

Ren’Py支持对话文本与语音播放的联结。使用voice语句可以实现这个功能,voice语句给定了播放的语音文件:
[RenPy] 纯文本查看 复制代码
voice "line0001.ogg"
"Welcome to Ren'Py"

通常来说,某个语音会被后面的互动行为中断。voice sustain语句则可以保证语音会播放完毕,即使遇到某个互动行为。
[RenPy] 纯文本查看 复制代码
voice "line0001.ogg"
"Welcome to Ren'Py..."

voice sustain
"... your digital storytelling engine."

config.voice_filename_format() 配置项允许你定制化语音文件名,使用的时候省略文件夹和文件扩展名。

语音标签(tag)
Ren’Py内置了一个语音标签(tag)系统,使得针对某个选定的角色语音的静音和取消静音成为可能。若要活用这个优势,需要在使用 Character() 创建每一个角色对象时都提供一个voice_tag入参,就可以使用 SetVoiceMute()ToggleVoiceMute() 切换角色语音的静音和取消静音状态。

举例:
[RenPy] 纯文本查看 复制代码
define e = Character("Eileen", voice_tag="eileen")
define l = Character("Lucy", voice_tag="lucy")

screen voice_toggle:
    vbox:
        textbutton "Mute Eileen" action ToggleVoiceMute("eileen")
        textbutton "Mute Lucy" action ToggleVoiceMute("lucy")

label start:
    show screen voice_toggle

    voice "e01.ogg"
    e "You can turn a character's voice on and off."

    voice "l01.ogg"
    l "Yeah! Now I can finally shut you up!"

    voice "l02.ogg"
    l "Wait... that means they can mute me as well! Really?"

自动语音
Ren’Py提供了自动匹配语音文件并播放的功能,不用在每行对话脚本之前都写一条voice语句就可以实现语音播放。

要实现这个功能的话,我们创建的语音文件名必须跟对话脚本每行的标识号(identifier)严格匹配。若要确定应该用哪个标识号,需要将对话脚本导出为一个表格,操作如下:在启动器上选择“Extract Dialogue”,“Tab-delimited Spreadsheet (dialogue.tab)”,“Continue”。然后会生成一个文件——dialogue.tab,它可以使用表格程序打开。

表格的第一列就是需要使用的标识号,其他列则是对话的更多别的信息。

要让Ren’Py自动播放语音,需要将 config.auto_voice() 设置为一个包含{id}格式的字符串。当对话发生,{id}会被对话标识符替换,并自动组成一个音频文件名。若音频文件名对应的文件真实存在,则那个文件就会播放。

举例,比如我们如下定义:
[RenPy] 纯文本查看 复制代码
config.auto_voice = "voice/{id}.ogg"

对话标识号是 demo_minigame_03fc91ef ,那么当对应的对话显示时,Ren’Py会寻找文件 voice/demo_minigame_03fc91ef.ogg 。如果文件存在,Ren’Py会播放这个文件。

语音函数

_get_voice_info()
    返回目前say语句对应正在播放语音的有关信息。只有当say语句执行时,该函数才能被调用。

    返回对象具有以下几个域(field):

    VoiceInfo.filename
        正在播放语音的文件名,如果没有任何文件在播放则返回空(None)。

    VoiceInfo.auto_filename
        Ren’Py意图使用自动语音搜索的文件名,如果未找到则返回空(None)。

    VoiceInfo.tag
        目前发言角色(character)的voice_tag参数。

    VoiceInfo.sustain
        该值为 False 时,用户互动行为会中断语音播放。改值为 True 时,一次用户互动行为后语音会持续播放。

voice(filename, tag=None)
    播放voice通道上名为filename的文件。等效于voice语句。

    filename
        想要播放的语音文件名。函数会使用 config.voice_filename_format() 拼装成将用播放的文件名。

    tag
        若该入参非空,其值应该是一个字符串,给定了需要播放的语音标签(tag)。若该入参为空(None),将使用默认值,即触发下一次互动行为前角色的voice_tag。

        语音标签(tag)用于指定发言角色,并允许用户针对某个角色的语音进行静音或取消静音。

voice_can_replay()
    若当前语音允许回放则返回True。

voice_replay()
    若当前语音允许回放,则回放该语音。

voice_sustain(ignored=u'', **kwargs)
    等效于voice sustain语句。

语音动作

PlayCharacterVoice(voice_tag, sample, selected=False)
    在voice通道上播放sample语音文件,并将其视为由带有 voice_tag 的某个角色所说。

    sample
        语音文件完整路径。不会对该文件的做任何语音相关的处理。

    selected
        若该值为 True,当 sample文件正在播放,调用该行为(action)函数的按钮会被标记为“被选中(selected)”。

SetCharacterVolume(voice_tag, volume=None)
    该动作允许每个角色的语音音量都可以调整。若 volume 值为空(None),将返回 voice_tag 对应的音量值。否则的话, voice_tag 对应的音量值会被设置为 volume 。

    volume 是一个介于0.0至1.0之间的值,在包含 voice 通道的混合器(mixer)音量中则是一个分量。

SetVoiceMute(voice_tag, mute)
    若 mute 值为True,带有给定语音标签 voice_tag 的所有语音会被静音。若 mute 值为False,取消语音标签 voice_tag 所有语音的静音。

ToggleVoiceMute(voice_tag, invert=False)
    切换 voice_tag 的静音状态。This is selected if the given voice tag is muted, unless invert is true, in which case it’s selected if the voice is unmuted.

VoiceReplay(*args, **kwargs)

    回放最近一次播放的语音。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 | 苏公网安备 32092302000068号 )

GMT+8, 2018-8-17 15:14 , Processed in 0.028034 second(s), 21 queries , File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表