配音
为对白行直接指定语音片段,或通过场景的语音映射与解析函数按 ID 引用
在台词的 voice 配置中传入 URL 或 Sound.voice() 实例
alice.say("早上好。", {
voice: "/voice/alice/good-morning.ogg",
});import { Sound } from "narraleaf-react";
const greeting = Sound.voice({
src: "/voice/alice/good-morning.ogg",
volume: 0.9,
});
alice.say("早上好。", { voice: greeting });语音 ID
台词较多时,可以在场景上定义语音表或解析函数,再用 ID 引用音频。这样不需要在每句台词中重复文件路径
const room = new Scene("房间", {
voices: {
"alice-001": "/voice/alice/001.ogg",
"alice-002": Sound.voice("/voice/alice/002.ogg"),
},
});
room.action([
alice.say("早上好。", { voiceId: "alice-001" }),
alice.say("早餐准备好了。", { voiceId: "alice-002" }),
]);语音 ID 与文件名有固定规则时,可以使用解析函数
const room = new Scene("房间", {
voices: (id) => `/voice/${id}.ogg`,
});按角色分别控制音量
voiceVolume 一次管辖全部角色。要为每个角色单独提供一个控制,就在 voice 之下为每个角色声明一条总线,
并把语音放到那条总线上:
const game = new Game({
audioBuses: [
{id: "alice", parentId: "voice"},
{id: "bob", parentId: "voice"},
],
});
alice.say("早上好。", {
voice: Sound.voice({src: "/voice/alice/001.ogg", type: "alice"}),
});之后 game.audioBuses.setVolume("alice", 0.5) 会作用于正在播放的音频
参见音频总线
玩家侧的语音行为由 voiceVolume、voiceFadeDuration 和 voiceEndMode 控制。见管理偏好