【问题标题】:sox create and play tone only on left or right channelsox 仅在左声道或右声道上创建和播放音调
【发布时间】:2020-07-22 22:36:18
【问题描述】:

我正在尝试在 python 中创建一个音调并仅在左声道或右声道上播放。我不知道如何指定在所选频道上播放。

到目前为止,这是我的代码:

import os

frequency = 1000 #hz

duration = 2000 #milliseconds

os.system('play -n synth %s sin %s' % (duration/1000, frequency))

我尝试过“混音”,但没有成功。

感谢您的帮助!

【问题讨论】:

    标签: python sox


    【解决方案1】:

    我建议先让 sox 输出你想要的内容,然后再添加到你的 python 代码中。这应该做你想做的(先左,后右)。

    play -n -c 2 synth 2 sin 1000 remix 1 0
    play -n -c 2 synth 2 sin 1000 remix 0 1
    

    您可能还对 sox 的默认设备有疑问。 play 只是 sox -d 的别名,即使用默认设备进行输出。要检查这一点,或者如果您希望输出转到文件,您可以使用:

    sox -n -c 2 left.wav synth 2 sin 1000 remix 1 0
    sox -n -c 2 right.wav synth 2 sin 1000 remix 0 1
    

    你的 python 代码可以这样合并:

    import os    
    
    frequency = 1000 #hz
    
    duration = 2000 #milliseconds
    
    os.system('play -n -c 2 synth %s sin %s remix 1 0' % (duration/1000, frequency))
    

    【讨论】:

    • 感谢您的回答!有什么办法可以使这种无阻塞,即在播放声音时开始播放声音并做其他事情,而不是等到声音播放后再开始其他事情?
    • 是的,如果您改用subprocess.Popen() - 请参阅stackoverflow.com/a/636570/12744
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多