树莓派6麦克风阵列工具包配置问题及解决方法

官方教程网址

http://wiki.seeedstudio.com/ReSpeaker_6-Mic_Circular_Array_kit_for_Raspberry_Pi/

本人在配置中遇到的问题

1.旧系统安装时出现raspi- kernel源获取失败,.deb文件不是完整的debian格式
百度的结果是由于更改国内镜像导致缺失数据源,找到合适数据源或者更改现有数据源为https格式可以解决,本人没找到,直接升级新系统(doge

2.树莓派系统烧录失败
烧录新系统时候使用的是etcherhttps://www.balena.io/etcher/?ref=etcher_footer
系统是官方最新系统https://www.raspberrypi.org/downloads/raspbian/
烧录出来的结果一直显示失败,插入树莓派也无法打开,多次试验后最终解决办法为:电脑读出TF卡以后打开磁盘管理,删除TF卡的所有分卷,新建NTFS格式简单卷,重新插入按照NTFS格式化,完成以后进行烧录,烧录结果显示失败也能够正常开机。

3.连接至Alexa SDK成功,但是无法语音互动。
修改 /boot/config.txt,在末尾添加上:dtparam=audio=on(开机时自动启动音频类模块)重新启动;
如果运行时出现 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.类似错误,打开/usr/share/alsa/alsa.conf ,将出现上述错误的部分改为default并保存;对于 JackD server连接失败的错误,执行

sudo apt-get --no-install-recommends install jackd2
jackd -d alsa

保持此窗口打开,开启新窗口输入后续命令

参照https://blog.csdn.net/qq_27011361/article/details/83303439

4.安装snowboy后无法正常开启pulseaudio
在pulseaudio --start失败以后
执行

pulseaudio --kill  
jack_control  start

在执行jack_control start时可能会提示报错,忽略掉,继续执行

jack_control exit  
pulseaudio --start

即可

参照https://blog.csdn.net/qq_34638161/article/details/80384261

后续安装ODAS STDIO的情况:
在电脑段首先安装nodejs v12以上版本,而后安装,根据文章说明进行前期配置,在树莓派上安装ODA库,首先打开ODA STDIO,根据readme里面配置好core文件和config文件,树莓派上同样配置好,转到/odas/bin ,执行

sudo ./odaslive -c ./respeaker-6mic-odas.cfg

其中-c后面是树莓派上配置文件保存地址,本人为了方便放在同一文件夹。

配置内容如下
树莓派

# Configuration file for ReSpeaker 6 Mic Array
# Circular shape, R = 0.0463m

version = "2.1";

# Raw
raw: 
{
    fS = 16000;
    hopSize = 128;
    nBits = 32;
    nChannels = 8; 

    # Input with raw signal from microphones
    interface: {
        type = "soundcard";
        card = 1;
        device = 0;
    }
}

# Mapping
mapping:
{
    map: (1, 2, 3, 4, 5, 6);
}

# General
general:
{
    epsilon = 1E-20;
    size: 
    {
        hopSize = 128;
        frameSize = 256;
    };
    samplerate:
    {
        mu = 16000;
        sigma2 = 0.01;
    };
    speedofsound:
    {
        mu = 343.0;
        sigma2 = 25.0;
    };
    mics = (
        # Microphone 1
        { 
            mu = ( -0.0232, +0.0401, +0.0000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 90.0 );
        },
        # Microphone 6
        { 
            mu = ( +0.0232, +0.0401, +0.0000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 90.0 );
        },
        # Microphone 5
        { 
            mu = ( +0.0463, +0.0000, +0.0000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 90.0 );        
        },
        # Microphone 4
        { 
            mu = ( +0.0232, -0.0401, +0.0000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 90.0 );        
        },
        # Microphone 3
        { 
            mu = ( -0.0232, -0.0401, +0.0000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 90.0 );
        },
        # Microphone 2
        { 
            mu = ( -0.0463, +0.0000, +0.0000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 90.0 );
        }
    );

    # Spatial filters to include only a range of direction if required
    # (may be useful to remove false detections from the floor, or
    # limit the space search to a restricted region)
    spatialfilters = (
        {
            direction = ( +0.000, +0.000, +1.000 );
            angle = (80.0, 90.0);
        }
    );  
    nThetas = 181;
    gainMin = 0.25;
}

# Stationnary noise estimation
sne:
{
    b = 3;
    alphaS = 0.1;
    L = 150;
    delta = 3.0;
    alphaD = 0.1;
}

# Sound Source Localization
ssl:
{
    nPots = 4;
    nMatches = 10;
    probMin = 0.5;
    nRefinedLevels = 1;
    interpRate = 4;

    # Number of scans: level is the resolution of the sphere
    # and delta is the size of the maximum sliding window
    # (delta = -1 means the size is automatically computed)
    scans = (
        { level = 2; delta = -1; },
        { level = 4; delta = -1; }
    );

    # Output to export potential sources
    potential: {
        format = "json";
        interface: {
            type = "socket"; ip = "192.168.1.111"; port = 9001;
        };
        #format = "undefined";
        #interface: {
        #    type = "blackhole";
        #}
    };
}

# Sound Source Tracking
sst:
{
    # Mode is either "kalman" or "particle"
    mode = "kalman";

    # Add is either "static" or "dynamic"
    add = "dynamic";

    # Parameters used by both the Kalman and particle filter
    active = (
        { weight = 1.0; mu = 0.3; sigma2 = 0.0025 }
    );

    inactive = (
        { weight = 1.0; mu = 0.15; sigma2 = 0.0025 }
    );

    sigmaR2_prob = 0.0025;
    sigmaR2_active = 0.0225;
    sigmaR2_target = 0.0025;
    Pfalse = 0.1;
    Pnew = 0.1;
    Ptrack = 0.8;

    theta_new = 0.9;
    N_prob = 5;
    theta_prob = 0.8;
    N_inactive = ( 150, 200, 250, 250 );
    theta_inactive = 0.9;

    # Parameters used by the Kalman filter only
    kalman: {
        sigmaQ = 0.001;
    };
   
    # Parameters used by the particle filter only
    particle: {
        nParticles = 1000;
        st_alpha = 2.0;
        st_beta = 0.04;
        st_ratio = 0.5;
        ve_alpha = 0.05;
        ve_beta = 0.2;
        ve_ratio = 0.3;
        ac_alpha = 0.5;
        ac_beta = 0.2;
        ac_ratio = 0.2;
        Nmin = 0.7;
    };

    target: ();

    # Output to export tracked sources
    tracked: {
        format = "json";
        interface: {
            type = "socket"; ip = "192.168.1.111"; port = 9000;
        };
        #format = "undefined";
        #interface: {
        #    type = "blackhole";
        #}
    };
}

sss:
{
    # Mode is either "dds", "dgss" or "dmvdr"
    mode_sep = "dds";
    mode_pf = "ms";

    gain_sep = 1.0;
    gain_pf = 10.0;

    dds: {

    };

    dgss: {
        mu = 0.01;
        lambda = 0.5;
    };

    dmvdr: {

    };

    ms: {
        alphaPmin = 0.07;
        eta = 0.5;
        alphaZ = 0.8;        
        thetaWin = 0.3;
        alphaWin = 0.3;
        maxAbsenceProb = 0.9;
        Gmin = 0.01;
        winSizeLocal = 3;
        winSizeGlobal = 23;
        winSizeFrame = 256;
    };

    ss: {
        Gmin = 0.01;
        Gmid = 0.9;
        Gslope = 10.0;
    };

    separated: {
        fS = 44100;
        hopSize = 512;
        nBits = 16;        

        interface: {
            type = "file";
            path = "separated.raw";
        };       
    };

    postfiltered: {
        fS = 44100;
        hopSize = 512;
        nBits = 16;        

        interface: {
            type = "file";
            path = "postfiltered.raw";
        };      
    };
}

classify:
{
    frameSize = 1024;
    winSize = 3;
    tauMin = 32;
    tauMax = 200;
    deltaTauMax = 7;
    alpha = 0.3;
    gamma = 0.05;
    phiMin = 0.15;
    r0 = 0.2;    

    category: {
        format = "undefined";

        interface: {
            type = "blackhole";
        }
    }
}

PC端与其相同,只是IP地址修改为树莓派地址

你可能感兴趣的:(树莓派6麦克风阵列工具包配置问题及解决方法)