当前位置:   article > 正文

Python制作任意音频文件_单一频率音频制作

单一频率音频制作

本文件示例了如何用python脚本来生成任意波形的Wav音频文件,用来做为声音源帮助听力产品的测试。

python中需要安装wave、nump、scipy库;

下面为一生成无声音的脚本:

  1. import wave
  2. import numpy as np
  3. import scipy.signal as signal
  4. # sample frequency, unit = hz
  5. frameRate = 16000
  6. time = 60 # unit = second
  7. volumn = 0 # 30000,音量设置
  8. # 通过调用 scipy.signal库中的 chrip 函数,产生长度为10秒、取样频率为44.1kHz、100Hz到1kHz的频率扫描波
  9. t = np.arange(0, time, 1.0 / frameRate)
  10. #
  11. # Save time line into xls file.
  12. #
  13. '''
  14. ft = open("ti.xls", "w")
  15. for item in t:
  16. ft.write(str(item)+'\n')
  17. ft.close()
  18. '''
  19. # chirp(t,f0,t1,f1,method='linear', phi=0, vertex_zero=True)
  20. # t = array of time
  21. # f0 = start frequency from t[0]
  22. # t1 = end time
  23. # f1 = frequency of t1
  24. # for linear method: f(t) = f0 + (f1 - f0) * t/t1
  25. wave_data = signal.chirp(t, 100, time, 100, method='linear') * volumn
  26. # 由于chrip函数返回的数组为float64型,需要调用数组的astype方法将其转换为short型。
  27. wave_data = wave_data.astype(np.short)
  28. #
  29. # Save time line into xls file.
  30. #
  31. maxVal = 0
  32. minVal = 32768
  33. fwave = open("wave.xls", "w")
  34. for item in wave_data:
  35. fwave.write(str(item)+'\n')
  36. if maxVal < item:
  37. maxVal = item
  38. if minVal > item:
  39. minVal = item
  40. fwave.close()
  41. print('[min,max] value=[' + str(minVal) + ',' + str(maxVal) + ']' )
  42. '''
  43. #data = 2+np.sin(np.random.rand(160000)) # random noise
  44. data = 2+np.sin(np.array(range(160000))) # sin wave sound
  45. data = data*10000 # increase volumn
  46. data = data.astype(np.short) # convert wave dat to int16 from float64
  47. print(type(data[0]))
  48. # print(len(data))
  49. # print(data[:3])
  50. '''
  51. f = wave.open(r"000.wav", "wb")
  52. # 配置声道数、量化位数和取样频率
  53. f.setnchannels(1) # 声道数
  54. f.setsampwidth(2) # 量化位数
  55. f.setframerate(frameRate) # 采样频率
  56. f.writeframes(wave_data.tostring()) # 将wav_data转换为二进制数据写入文件
  57. f.close()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/106440
推荐阅读
相关标签
  

闽ICP备14008679号