Ren’Py支持對話文本與語音播放的聯結。使用voice語句可以實現這個功能,voice語句給定了播放的語音文件:
voice "line0001.ogg"
"歡迎來到Ren'Py"
通常來說,某個語音會被後面的互動行為中斷。voice sustain語句則可以保證語音會播放完畢,即使遇到某個互動行為。
voice "line0001.ogg"
"歡迎來到Ren'Py..."
voice sustain
"... 你的電子小說引擎。"
config.voice_filename_format 配置項允許你訂製化語音檔案名,使用的時候省略文件夾和文件副檔名。
Ren’Py內建了一個語音標籤(tag)系統,使得針對某個選定的角色語音的靜音和取消靜音成為可能。若要活用這個優勢,需要在使用 Character() 創建每一個角色對象時都提供一個voice_tag入參,就可以使用 SetVoiceMute() 或 ToggleVoiceMute() 切換角色語音的靜音和取消靜音狀態。
舉例:
define e = Character("艾琳", voice_tag="eileen")
define l = Character("露西", voice_tag="lucy")
screen voice_toggle:
vbox:
textbutton "艾琳靜音" action ToggleVoiceMute("eileen")
textbutton "露西靜音" action ToggleVoiceMute("lucy")
label start:
show screen voice_toggle
voice "e01.ogg"
e "你可以開關一個角色的語音。"
voice "l01.ogg"
l "耶!我現在終於可以讓你閉嘴了!"
voice "l02.ogg"
l "等一下……也就是說我也被靜音了!真的假的?"
Ren’Py提供了自動匹配語音文件並播放的功能,不用在每行對話腳本之前都寫一條voice語句就可以實現語音播放。
要實現這個功能的話,我們創建的語音檔案名必須跟對話腳本每行的標識號(identifier)嚴格匹配。若要確定應該用那個標識號,需要將對話腳本導出為一個表格,操作如下:在啟動器上選擇“Extract Dialogue”,“Tab-delimited Spreadsheet (dialogue.tab)”,“Continue”。然後會生成一個文件——dialogue.tab,它可以使用表格程序打開。
表格的第一列就是需要使用的標識號,其他列則是對話的更多別的訊息。
要讓Ren’Py自動播放語音,需要將 config.auto_voice 設置為一個包含 {id} 格式的字串。當對話發生, {id} 會被對話標識符替換,並自動組成一個音訊檔案名。若音訊檔案名對應的文件真實存在,則那個文件就會播放。
舉例,比如我們如下定義:
config.auto_voice = "voice/{id}.ogg"
對話標識號是 demo_minigame_03fc91ef ,那麼當對應的對話顯示時,Ren’Py會尋找文件 voice/demo_minigame_03fc91ef.ogg 。如果文件存在,Ren’Py會播放這個文件。
_get_voice_info() link返回目前say語句對應正在播放語音的有關訊息。只有當say語句執行時,該函數才能被調用。
返回對象具有以下幾個欄位(field):
VoiceInfo.filename link正在播放語音的檔案名,如果沒有任何文件在播放則返回None。
VoiceInfo.auto_filename linkRen’Py意圖使用自動語音搜索的檔案名,如果未找到則返回None。
VoiceInfo.tag link目前發言角色(character)的voice_tag參數。
VoiceInfo.sustain link該值為False時,用戶互動行為會中斷語音播放。改值為True時,一次用戶互動行為後語音會持續播放。
voice(filename, tag=None)播放voice通道上名為filename的文件。等效於voice語句。
config.voice_filename_format() 拼裝成將用播放的檔案名。若該入參非空,其值應該是一個字串,給定了需要播放的語音標籤(tag)。若該入參為None,將使用預設值,即觸發下一次互動行為前角色的voice_tag。
語音標籤(tag)用於指定發言角色,並允許用戶針對某個角色的語音進行靜音或取消靜音。
voice_can_replay() link若當前語音允許重播則返回True。
voice_replay() link若當前語音允許重播,則重播該語音。
voice_sustain(ignored=u'', **kwargs) link等效於voice sustain語句。
PlayCharacterVoice(voice_tag, sample, selected=False) link在voice通道上播放sample語音文件,並將其視為由帶有 voice_tag 的某個角色所說。
SetCharacterVolume(voice_tag, volume=None) link該行為允許每個角色的語音音量都可以調整。若 volume 值為None,將返回 voice_tag 對應的音量值。否則的話, voice_tag 對應的音量值會被設置為 volume 。
volume 是一個介於0.0至1.0之間的值,在包含 voice 通道的混合器(mixer)音量中則是一個分量。
SetVoiceMute(voice_tag, mute) link若 mute 值為True,帶有給定語音標籤 voice_tag 的所有語音會被靜音。若 mute 值為False,取消語音標籤 voice_tag 所有語音的靜音。
ToggleVoiceMute(voice_tag, invert=False) link切換 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) link重播最近一次播放的語音。