Roomsimove---介绍和使用(附下载地址)

1、简介

Roomsimove可以仿真在长方体房间中一个声源到一个或多个麦克风的声学冲激响应(Acoustic Impulse Response, AIR),从而我们可以仿真出在无噪声情况下一个房间中的语音的混响过程,通过纯净语音,得到混响的语音。可以将不同说话人的语音经过混响后相加,便可以得到用于语音分离的卷积混合语音信号。该仿真软件可以用于静态和动态的声源仿真。静态就是声源位置和麦克风的位置固定,动态即麦克风固定,声源移动,Roomsimove静态声源仿真部分是在Roomsim上做的裁剪。本文只介绍Roomsimove静态声源的仿真过程。

2、相关函数、配置文件介绍

(1) 该函数用来计算在房间大小、麦克风位置和属性、声源位置设置好后的AIR,room_sensor_config.txt是房间和麦克风的配置文件,[3;2;1.5]即为声源的位置(x, y, z)。

Hs1 = roomsimove_single('room_sensor_config.txt',[3; 2; 1.5]);

(2) 该函数即用来计算纯净语音信号s1经过混响后的语音。

s1img = fftfilt(Hs1,s1);

(3)这就是room_sensor_config.txt的所有内容,采样频率要和语音一样,room_size即房间的大小(长,宽,高),然后下面就是设置的房间六个墙面的表面吸波系数,麦克风如果设置为全向的话,设置的方向不起作用。

屏幕截图 2021-08-13 203502
下图是Roomsim的房间坐标系(图片来自Roomsim使用手册),Roomsimove是在Roomsim上裁剪(stripped-down version of the Roomsim toolbox version 3.3)的,所以是一样的。

image

(4) 该函数可以根据自己想要的混响时间计算出房间六个面的吸波系数,将room_sensor_config.txt中的吸波系数改为该值即得到所需混响时间的房间。
function A=RT60toA(room_size,RT60)

3、实例

clc;clear;close all;
[s1,fs1] = audioread('dev1_female3_src_1.wav');
[s2,fs2] = audioread('dev1_male4_src_1.wav');
s1 = (s1/max(s1))*0.6;
s2 = (s2/max(s2))*0.6;
Hs1 = roomsimove_single('room_sensor_config.txt',[3; 2; 1.5]);
Hs2 = roomsimove_single('room_sensor_config.txt',[3; 3; 1.5]);
s1img = fftfilt(Hs1,s1);
s2img = fftfilt(Hs2,s2); 
x = s1img + s2img; % x 即混合语音信号

4、下载地址

Roomsimove: https://members.loria.fr/EVincent/software-and-data/

Roomsim: http://media.uws.ac.uk/~campbell/Roomsim/

posted @ 2021-08-14 20:10  大鱼dayu  阅读(663)  评论(2)    收藏  举报