我正在尝试构建一个允许用户编辑其上传的声音文件的应用程序。到目前为止,用户已经可以使用waveurfer js库检索其声音并以波形形式显示。这个想法是在选定的waveurfer区域上获取起点和终点,然后使用updateview将这些值传递给form类(sox将在其中修剪文件)。我在我的虚拟环境中安装了pysox并安装了sox。到目前为止,这是我的urls.py:

url(r'^update_sound/(?P<pk>[\w-]+)$', UpdateSound.as_view(), name='update_sound'),

我的forms.py:
import sox
class UpdateSound(forms.ModelForm):
def trim_sound(self):
    file = self.cleaned_data.get('sound', False)
    tfm = sox.Transformer(file)
    tfm.trim(0,0.3)



class Meta:
    model = Sounds
    fields = [
    'sound',
    ]

和更新 View
class UpdateSound(UpdateView):
    model = Sounds
    form_class = UpdateSound
    template_name= 'sound_detail.html'

我的主要问题是:1.这是编辑声音文件的一种好方法吗?2.我应该在表单类中添加些什么以使其起作用?我看过sox文档,但仍不完全清楚该怎么做。我应该将声音文件作为参数传递给转换器吗?任何帮助深表感谢。

最佳答案

  • pysox模块不使用libsox,而是为每个要处理的音频文件创建一个子过程(源代码here)。当然可以,但是如果服务器处理的速度超过100 QPS,则应该考虑创建和销毁进程的开销。
  • 随着文档的发展,您应该编写

    tfm.build('path / to / input_audio','path / to / output_audio')

    应用效果后(在您的情况下为tfm.trim)。

    请记住,您应该在服务器上安装sox(apt / yum install sox),并且它不支持写入MP3 / M4A / OGG等,因此您可能需要另外调用lame / ffmpeg来编码输出供下载。
  • 关于python - 使用sox在Django表单类中修剪声音文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45776886/

    10-13 07:51