播放声音时遇到问题。
目的是制作一个与我的声音对话的文本到语音程序。
我录制了很多音素(带有词性的.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
答案 0 :(得分:0)
只是想一想,如果你试过这个怎么办:
if ( voice[ 1 ]:isPlaying() ) then
voice[ 1 ]:stop()
voice[ 1 ]:play()
end
我想你可以在播放任何声音之前做到这一点。
答案 1 :(得分:0)
如果你想同时播放两次相同的声音,你需要有多个来源实例。
SLAM是Löve2D的音频管理器库,完美地处理了这个问题。
以下是SLAM的一个示例,它将多次播放相同的声音:
require("slam")
sounds = {
["testAudio"] = love.audio.newSource("testAudio.wav", "stream"),
}
for i = 1, 10 do
sounds["testAudio"]:play()
end
这样,当前正在播放的任何实例都不会停止。