__load__.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. demeter service
  5. name:__load__.py
  6. author:rabin
  7. """
  8. from demeter.core import *
  9. from datetime import *
  10. import uuid
  11. import os
  12. import os.path
  13. import wave
  14. import tempfile
  15. from pydub import AudioSegment
  16. from uuid import getnode as get_mac
  17. from abc import ABCMeta, abstractmethod
  18. """
  19. 将 mp3 文件转成 wav
  20. :param file: mp3 文件路径
  21. :return: wav 文件路径
  22. """
  23. def convertMp3ToWav(file):
  24. target = file.replace(".mp3", ".wav")
  25. if not os.path.exists(file):
  26. Demeter.logger.critical("文件错误 {}".format(file))
  27. return None
  28. AudioSegment.from_mp3(file).export(target, format="wav")
  29. return target
  30. """
  31. 将 wav 文件转成 mp3
  32. :param file: wav 文件路径
  33. :return: mp3 文件路径
  34. """
  35. def convertWavToMp3(file):
  36. target = file.replace('.wav', '.mp3')
  37. if not os.path.exists(file):
  38. Demeter.logger.critical("文件错误 {}".format(file))
  39. return None
  40. AudioSegment.from_wav(file).export(target, format="mp3")
  41. return target
  42. """
  43. 从 wav 文件中读取 pcm
  44. :param file: wav 文件路径
  45. :return: pcm 数据
  46. """
  47. def getPcmFromWav(file):
  48. wav = wave.open(file, 'rb')
  49. return wav.readframes(wav.getnframes())
  50. """
  51. 二进制形式写入临时文件
  52. :param data: 二进制数据
  53. :param suffix: 后缀名
  54. :return: 文件保存后的路径
  55. """
  56. def writeTempFile(data, suffix):
  57. with tempfile.NamedTemporaryFile(suffix=suffix, delete=False) as f:
  58. f.write(data)
  59. tmpfile = f.name
  60. return tmpfile