love2d播放两次声音?

问题描述 投票:0回答:3
之后播放

我在播放声音方面有问题。

目的是将文本与我的声音交谈。

i记录了许多音素(带有语音部分的WAV文件),需要以正确的顺序互相播放。 每个声音只有在以前的声音完成时才能播放。 因此,如果我的程序需要说“你好”,那么这样做:

**play("h.wav") if "h.wav":isStopped() then: play("e.wav") if "e.wav":isStopped() then... etc ...**
出于测试目的,我想播放“ A.Wav”两次,但问题是我只会听到'a'一次...
如果我玩,例如'a'然后'b',效果很好。

任何帮助都会不胜感激!

这是我目前拥有的测试代码:

function love.load() voice = {"a","b","e","f", ......} for i in pairs(voice) do voice[i] = love.audio.newSource("VOICE/" .. voice[i] .. ".wav", "static") end end function love.keypressed(key) if key == "a" then voice[1]:play() while voice[1]:isPlaying() do end voice[1]:play() while voice[1]:isPlaying() do end end end

	
audio playback love2d
3个回答
0
投票

if ( voice[ 1 ]:isPlaying() ) then voice[ 1 ]:stop() voice[ 1 ]:play() end

我猜你可以在播放任何声音之前做到这一点。
    

如果您想同时播放相同的声音,则需要具有多个源的实例。 löve2d的音频经理库

0
投票

https://love2d.org/wiki/slam

shere是SLAM的一个例子,它将多次播放相同的声音:

require("slam") sounds = { ["testAudio"] = love.audio.newSource("testAudio.wav", "stream"), } for i = 1, 10 do sounds["testAudio"]:play() end 这种方式,任何目前正在播放的实例都不会停止。

您可以:clone()声源并独立播放。这样:

function love.load()
    SOUNDS = { ["ominous"] = love.audio.newSource("assets/sounds/ominous.wav", "static") }
end

function PlaySound(id)
    local src = SOUNDS["ominous"]:clone()
    src:play()
    return src
end

function love.keypressed(key)
    PlaySound("ominous")
    if key == "escape" then
        love.event.quit()
    end
end

这是thisCode

的广泛简化版本。

0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.