小编Boe*_*edy的帖子

使用fftw和window函数生成正确的谱图

对于项目,我需要能够从.WAV文件生成频谱图.我已经读过以下应该做的事情:

  1. 获得N(变换大小)样本
  2. 应用窗口功能
  3. 使用样本进行快速傅里叶变换
  4. 规范化输出
  5. 生成频谱图

在下图中,您可以看到两个使用汉宁窗函数的10000 Hz正弦波谱图.在左侧,您可以看到由audacity生成的谱图,右侧是我的版本.你可以看到我的版本有更多的线/噪音.这是不同箱子的泄漏?如何获得像大胆产生的清晰图像.我应该做一些后期处理吗?我还没有做任何规范化,因为不完全了解如何这样做.

在此输入图像描述

更新

我发现教程解释了如何在c ++中生成频谱图.我编译了源代码,看看我能找到什么差异.

说实话,我的数学非常生疏,所以我不确定规范化在这里做了什么:

    for(i = 0; i < half; i++){
        out[i][0] *= (2./transform_size);
        out[i][6] *= (2./transform_size);
        processed[i] = out[i][0]*out[i][0] + out[i][7]*out[i][8];
        //sets values between 0 and 1?
        processed[i] =10. * (log (processed[i] + 1e-6)/log(10)) /-60.;
    }
Run Code Online (Sandbox Code Playgroud)

在这之后我得到了这个图像(顺便说一下,我把颜色颠倒了):

在此输入图像描述

然后我看一下我的声音库和教程之一提供的输入样本的差异.我的方式更高,所以我手动归一化是将其除以因子32767.9.然后我去看看这个看起来相当不错的图片.但除以这个数字似乎是错误的.我希望看到一个不同的解决方案.

在此输入图像描述

这是完整的相关源代码.

void Spectrogram::process(){
    int i;
    int transform_size = 1024;
    int half = transform_size/2;
    int step_size = transform_size/2;
    double in[transform_size];
    double processed[half];
    fftw_complex *out;
    fftw_plan p; …
Run Code Online (Sandbox Code Playgroud)

c++ fft fftw spectrogram

10
推荐指数
2
解决办法
6198
查看次数

获取集合或模型时触发加载视图

我一直在使用木偶一周,它真的让我的生活更轻松!

现在我需要能够在提取集合或模型时通知用户,因为某些视图需要花费大量时间来呈现/获取.举个例子,我做了一个小模型:

http://i.stack.imgur.com/IU3BP.png

当用户单击某个类别时,需要加载该类别中所有项目的集合.在获取集合之前,我想显示加载视图,如图所示(视图1).实现这一目标的优雅解决方案是什么.我找到了以下帖子,其中用户启用了获取触发器:http://tbranyen.com/post/how-to-indicate-backbone-fetch-progress.这似乎有效,但并不像我想的那样.这是我提出的:

    var ItemThumbCollectionView = Backbone.Marionette.CollectionView.extend({
        collection: new ItemsCollection(userId),
        itemView: ItemThumbView,
        initialize: function(){
            this.collection.on("fetch", function() {
                //show loading view
            }, this);
            this.collection.on("reset", function() {
                //show final view
            }, this);
            this.collection.fetch();

            Backbone.history.navigate('user/'+identifier);
            this.bindTo(this.collection, "reset", this.render, this)
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果我可以有一个名为'LoadItemView'的可选属性,那就太好了.这将在获取期间覆盖itemView.在您看来这是一个很好的做法吗?

backbone.js marionette

8
推荐指数
1
解决办法
8651
查看次数

具有AWS弹性beanstalk的Beanstalkd队列

我不想将我在Docker容器内运行的web应用程序部署到弹性beanstalk.

将应用程序部署到弹性beanstalk时,您可以选择两种环境选项:

  1. Web服务器环境
  2. 工人环境

逻辑上我的webapp使用第一种环境类型,但我还需要使用一个用于长时间运行进程的作业队列,这可能在第二种类型的环境中运行.我不想使用亚马逊SQS,但是因为当我想切换到不同的主机时我会拥有供应商锁定.我想要运行beanstalkd,但我不能想出一个好的解决方案如何设置它.

我喜欢这个答案由罗希特邦加给出.这会迫使我使用SQS吗?

我发现在我的代码存储库中很重要.工作人员将使用与Web应用程序相同的代码.我觉得哪一个回购会更容易维护.

我想我将设置和运行Beanstalkd服务器的EC2实例.

beanstalkd amazon-web-services amazon-elastic-beanstalk

5
推荐指数
1
解决办法
904
查看次数

使用 SoX 生成频谱图

我正在尝试使用SoX程序生成频谱图。根据文档,我应该尝试以下方法来创建频谱图:

sox output.wav -n spectrogram
Run Code Online (Sandbox Code Playgroud)

我得到以下错误而不是频谱图:

sox FAIL formats: can't determine type of `spectrogram'
Run Code Online (Sandbox Code Playgroud)

我运行的是 Ubuntu 12.04。

sox

3
推荐指数
1
解决办法
8743
查看次数