教大家如何搭建一个在VS下可以仿真音频算法的仿真平台,这里直接上源码模板

/**********************************************************************
** 一个完整的关于fopen,fread,fwrite,fclose的操作
** 一个关于算法仿真的实例
***********************************************************************/


#include <stdio.h>
#include "math.h"

/* Sampling Rate */
#define FS  (16000)
#define PI  (3.141592654)

/* random number generator, 0 <= RND < 1 */
#define RND(p) ((*(p) = (*(p) * 7141 + 54773) % 259200) * (1.0 / 259200.0))

/* MAX length of samples 采样缓存长度最大值 */
#define MAX_LEN_SMAPLE          2048

/* 定义每次处理的长度 */
#define BLOCK_TICK_SIZE         64

int main(int argc, char** argv)
{

    float pReadData[MAX_LEN_SMAPLE] = {0};       //输入缓存数组
    float pWriteData[MAX_LEN_SMAPLE] = {0};      //输出缓存数组
    int nReadLen = BLOCK_TICK_SIZE;
    int i = 0;
    int nAlgRunCount = 0;                       //算法运行次数

    FILE *pReadFile = fopen("in.pcm", "rb");    //in.pcm是float 格式的数据
    FILE *pWriteFile = fopen("out.pcm", "wb");

    if ((pReadFile == NULL) || (pWriteFile == NULL) || (nReadLen > MAX_LEN_SMAPLE))
    {
        if(pReadFile != NULL)
        {
            fclose(pReadFile);
        }

        if(pWriteFile != NULL)
        {
            fclose(pWriteFile);
        }

        printf("fopen Failed...\n");
        return 0 ;
    }

    //pcm文件的前几个字节是头文件信息,舍去
    nReadLen  = fread(pReadData, sizeof(float), 5, pReadFile);
    printf("AlgProcess Begin ...\n");
    nReadLen = BLOCK_TICK_SIZE;

    while(nReadLen > 0)         //如果文件读完,则返回-1
    {
        nReadLen  = fread(pReadData, sizeof(float), nReadLen, pReadFile);

        if (nReadLen > 0)
        {
            //开始做算法处理

            for(i = 0; i < nReadLen; i++)
            {
                pWriteData[i] = pReadData[i];
            }

            fwrite(pWriteData,  sizeof(float),nReadLen, pWriteFile);
            nAlgRunCount++;
            printf("AlgRunCount = %d\n", nAlgRunCount);
        }
    }

    printf("AlgProcess End,TotalCount = %d\n", nAlgRunCount);
    fclose(pReadFile);
    fclose(pWriteFile);
    return 0;

}






Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐