我正在使用python来播放正弦音.音调基于计算机的内部时间(以分钟为单位),但我希望同时播放一个基于秒的声音,以获得协调或双重声音.
这就是我到目前为止所拥有的;有人能指出我正确的方向吗?
from struct import pack
from math import sin, pi
import time
def au_file(name, freq, dur, vol):
fout = open(name, 'wb')
# header needs size, encoding=2, sampling_rate=8000, channel=1
fout.write('.snd' + pack('>5L', 24, 8*dur, 2, 8000, 1))
factor = 2 * pi * freq/8000
# write data
for seg in range(8 * dur):
# sine wave calculations
sin_seg = sin(seg * factor)
fout.write(pack('b', vol * 127 * sin_seg))
fout.close()
t = time.strftime("%S", time.localtime())
ti = time.strftime("%M", time.localtime())
tis = float(t)
tis = tis * 100
tim = float(ti)
tim = tim * 100
if __name__ == '__main__':
au_file(name='timeSound1.au', freq = tim, dur=1000, vol=1.0)
import os
os.startfile('timeSound1.au')
解决方法:
您的代码中的以下最小更改如何…:
from struct import pack
from math import sin, pi
import time
def au_file(name, freq, freq1, dur, vol):
fout = open(name, 'wb')
# header needs size, encoding=2, sampling_rate=8000, channel=1
fout.write('.snd' + pack('>5L', 24, 8*dur, 2, 8000, 1))
factor = 2 * pi * freq/8000
factor1 = 2 * pi * freq1/8000
# write data
for seg in range(8 * dur):
# sine wave calculations
sin_seg = sin(seg * factor) + sin(seg * factor1)
fout.write(pack('b', vol * 64 * sin_seg))
fout.close()
t = time.strftime("%S", time.localtime())
ti = time.strftime("%M", time.localtime())
tis = float(t)
tis = tis * 100
tim = float(ti)
tim = tim * 100
if __name__ == '__main__':
au_file(name='timeSound2.au', freq=tim, freq1=tis, dur=1000, vol=1.0)
import os
os.startfile('timeSound2.au')
标签:python,audio 来源: https://codeday.me/bug/20190710/1422840.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。