Git Product home page Git Product logo

hoertech-ggmbh / openmha Goto Github PK

View Code? Open in Web Editor NEW
231.0 33.0 72.0 270.42 MB

The open Master Hearing Aid (openMHA)

Home Page: http://www.openmha.org

License: GNU Affero General Public License v3.0

Makefile 2.96% Perl 0.85% HTML 2.24% M4 0.17% Shell 1.84% TeX 3.78% C 32.94% Fortran 0.02% Roff 0.01% OCaml 1.23% MATLAB 13.46% C++ 25.47% CSS 0.23% PostScript 12.24% M 2.36% Batchfile 0.01% Python 0.12% QMake 0.01% NSIS 0.06% Assembly 0.01%

openmha's Introduction

DOI GitHub

openMHA

Open Master Hearing Aid (openMHA)

DOI:10.5281/zenodo.4569575

Current release: 4.18.0 (2024-05-16)

Content of the openMHA

The software contains the source code of the openMHA Toolbox library, of the openMHA framework and command line application, several tools to operate openMHA and of a selection of algorithm plugins forming a basic hearing aid processing chain featuring

  • calibration
  • bilateral adaptive differential microphones for noise suppression [1]
  • binaural coherence filter for feedback reduction and dereverberation [2]
  • multi-band dynamic range compressor for hearing loss compensation [3]
  • spatial filtering algorithms:
    • a delay-and-sum beamformer
    • a MVDR beamformer [4]
  • single-channel noise reduction [5]
  • resampling and filter plugins
  • STFT cyclic aliasing prevention
  • adaptive feedback cancellation [6]
  • probabilistic sound source localization [7]

See below for a list of available reference implementations.

Citation in publications

In publications using openMHA please use the DOI assigned to this Github repository, 10.5281/zenodo.4569575, and cite the following open-access publication:

Hendrik Kayser, Tobias Herzke, Paul Maanen, Max Zimmermann, Giso Grimm, and Volker Hohmann, Open community platform for hearing aid algorithm research: open Master Hearing Aid (openMHA), SoftwareX, Volume 17, 2022, 100953, ISSN 2352-7110, DOI: 10.1016/j.softx.2021.100953.

For individual algorithms, please also refer to the plugin documentation and the list of publications at the end of this README.

Installation

For installation instructions for Linux, Windows and macOS, please refer to the instructions in file INSTALLATION.md.

We also provide SD card images for Beaglebone Black with the Cape4all sound card here: http://mahalia.openmha.org/.

Usage instructions:

Please follow our getting-started guide: http://www.openmha.org/docs/openMHA_starting_guide.pdf

Our user forum is found here: https://forum.openmha.org/

Known issues

macOS

  • There are some known issues with Octave under macOS. The openMHA GUI may not work correctly with Octave. As an alternative Matlab can be used.

Proprietary fitting rules

It is possible to fit a dynamic compressor in openMHA with the commercial hearing aid prescription rules DSLmio 5 and NAL NL2.

The software libraries implementing these rules must be obtained from their respective authors. The openMHA team provides wrappers around these libraries which for legal reasons are not distributed as part of openMHA but as optional extras.

Please refer to files README_NALNL2.md and README_DSLmio5.md for more information.

Reference algorithms

A collection of openMHA configuration files that implement signal processing algorithms for hearing aids as they were used in the following publications are available in the reference_algorithms directory:

Baumgärtel, R. M., Krawczyk-Becker, M., Marquardt, D., Völker, C., Hu, H., Herzke, T., Coleman, G., Adiloğlu, K., Ernst, S. M., Gerkmann, T., Doclo, S., Kollmeier, B., Hohmann, V., & Dietz, M. (2015). Comparing Binaural Pre-processing Strategies I: Instrumental Evaluation. Trends in hearing, 19. https://doi.org/10.1177/2331216515617916

and

Hendrikse, M. M. E., Grimm, G., & Hohmann, V. (2020). Evaluation of the Influence of Head Movement on Hearing Aid Algorithm Performance Using Acoustic Simulations. Trends in Hearing, 24, 1–20. https://doi.org/10.1177/2331216520916682

A database that can be utilized to reproduce the signals used in the latter study is available under: https://doi.org/10.5281/zenodo.3621282.

Available methods:

  • Single-channel noise reduction
  • Binaural coherence filter
  • Adaptive MVDR beamformer
  • Binaural beamformer
  • Bilateral adaptive differential microphones
  • Delay-and-subtract beamformer

For references and more information see file README.md in the reference_algorithms directory.

References for individual algorithms

[1] Elko GW, Pong ATN. A Simple Adaptive First-order Differential Microphone. In: Proceedings of 1995 Workshop on Applications of Signal Processing to Audio and Accoustics; 1995. p. 169–172.

[2] Grimm G, Hohmann V, Kollmeier B. Increase and Subjective Evaluation of Feedback Stability in Hearing Aids by a Binaural Coherence-based Noise Reduction Scheme. IEEE Transactions on Audio, Speech, and Language Processing. 2009;17(7):1408–1419.

[3] Grimm G, Herzke T, Ewert S, Hohmann V. Implementation and Evaluation of an Experimental Hearing Aid Dynamic Range Compressor Gain Prescription. In: DAGA 2015; 2015. p. 996–999.

[4] Adiloğlu K, Kayser H, Baumgärtel RM, Rennebeck S, Dietz M, Hohmann V. A Binaural Steering Beamformer System for Enhancing a Moving Speech Source. Trends in Hearing. 2015;19:2331216515618903

[5] Gerkmann T, Hendriks RC. Unbiased MMSE-Based Noise Power Estimation With Low Complexity and Low Tracking Delay. IEEE Transactions on Audio, Speech, and Language Processing. 2012;20(4):1383–1393.

[6] Schepker H, Doclo S, A semidefinite programming approach to min-max estimation of the common part of acoustic feedback paths in hearing aids. IEEE Transactions on Audio, Speech, and Language Processing. 2016;24(2):366-377.

[7] Kayser H, Anemüller J, A discriminative learning approach to probabilistic acoustic source localization. In: International Workshop on Acoustic Echo and Noise Control (IWAENC 2014); 2014. p. 100–104.

openmha's People

Contributors

frasherloshaj avatar gisogrimm avatar hendrikkayser avatar marcecj avatar pmaanen avatar steffendasenbrock avatar tobiasherzke avatar zain-sohail avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmha's Issues

MHA GUI

Dear all,

I am facing a Problem to open the MHA GUI.
From the Manual it is written to the write the command "mhacontrol".

first I had problemls with addin a Java path:

javaaddpath(C:\Program Files\openMHA\mfiles\mhactl_java.jar)

then it also didnt work so prom the Forum I tried the following commands:

setenv('MHA_INSTALL_DIR', "PATH-TO-YOUR/openMHA/bin" );
setenv('LD_LIBRARY_PATH','C:\Pogram Files\openMHA\mfiles\libfuncs')

image

Thank you very much!!

Build system issue while cross-compiling

Is there any plan to use a build system that is cross-compilation friendly ?
I would suggest using CMake instead of hand written Makefiles and configure script.

For now, the configure script detect my host gcc instead of the target toolchain (ARM):

PLATFORM=linux
DYNAMIC_LIB_EXT=.so
GCC_VER=-8
BUILD_DIR=x86_64-linux-gcc-8
ARCH=x86_64
PREFIX=/usr
WITH_ALSA=yes
WITH_JACK=yes
SSE+=-msse -msse2 -mfpmath=sse
OPTIM=-O3 $(SSE) -ffast-math -fomit-frame-pointer -fno-finite-math-only
CXXFLAGS+=-Wall -Werror -std=c++11 -fPIC $(OPTIM)
CFLAGS+=-Wall -Werror -std=gnu11 -fPIC $(OPTIM)

The build fail latter while cross-compiling the bundled version of fftw (2.1.5)

I attended to the ELCE openMHA presentation and I wanted to try to add openMHA to Buildroot.
I'd like to help on the build system :)

Best regards,
Romain

openMHA with JACK

I would like to test and run the examples of the openMHA software with JACK.
According to the instruction file (section 4.2 of openMHA_application_manual.pdf) I typed ' nc localhost 33337 ' and then ' mha ?read:mha/configurations/example_dc_live.cfg '. However, the process running in the terminal takes a very long time and I have not seen anything yet which shows success or failure. when I try to close the terminal there is this alarm: 'There is still a process running in this terminal. closing the terminal will kill it.'
I would be thankful if you could help me please.

mhacontrol issue

I tried running OpenMHA project with open mha running on command prompt.
whenever I give mhacontrol command with no argument, the photo for OpenMHA pops up, and then it gives the error "Index in position 1 exceeds in array bound" in a new pop up window.
if I press OK,
I get this message in command window.

mhacontrol
Warning: Index in position 1 exceeds array bounds.
C:\Program Files\openMHA\mfiles\mha_findid.m:35
C:\Program Files\openMHA\mfiles\mha_get_basic_cfg_network.m:24
C:\Program Files\openMHA\mfiles\mhacontrol.m:52
In mhacontrol (line 81)
Index in position 1 exceeds array bounds.

Error in mha_findid (line 35)
cfg.(csBase{idx(1),2}) = csBase{idx(1),1};

Error in mha_get_basic_cfg_network (line 24)
[s.base,s.all_id_plugs] = mha_findid(mha);

Error in mhacontrol (line 52)
s = mha_get_basic_cfg_network( mha );

index error when calling mhacontrol()

Commands executed in Matlab R2018b:

  • system(mha.exe &)
  • mhacontrol.m without input arguments

openMHA is running, after executing mhacontrol() index error appears (see screenshot)
openMHA_index_error

how to run commands after compiling

I installed the openMHA package but I want to check the variables and now I compiled the openMHA. After that, I can run the mha.exe from "./bin/" directory and got this message.

`
#############################################################

ATTENTION: THIS BUILD OF OPENMHA IS NOT A RELEASE VERSION

#############################################################

The Open Master Hearing Aid (openMHA) server version 4.16.0+
Copyright (c) 2005-2021 HoerTech gGmbH, D-26129 Oldenburg, Germany

This program comes with ABSOLUTELY NO WARRANTY; for details see file COPYING.
This is free software, and you are welcome to redistribute it
under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE, Version 3;
for details see file COPYING.
'
but there is no place to run the commands or navigating to directories to run the examples. Did I miss anything?

On the other hand, how can I run the compiled version of openMHA from 'cmd'? I add the path to the environment variables. after running the 'mha --interactive' in cmd, I got the following pop-up messages

mha.exe - system error
The code execution cannot proceed because libsndfile-1.dll was not found. Reinstalling the program may fix this problem.

mha.exe - system error
The code execution cannot proceed because libgcc_s_seh-1.dll was not found. Reinstalling the program may fix this problem.

MHA fitting GUI

Thanks Tobias for your quick response,
What I would like to try is the GUI interface (eg client database dialog, audiogram editor).
Although I had the windows installer installed, but I can not open the GUI.
Unfortunately, the documentation did not help me (which was mostly for developers)
Can you please help me with this?

can't run mhacontrol command

Hi

I wanted to use this software but when i run mhacontrol command in matlab in windows 10, it gives a weird error. i checked MHA connection with mha test and it works fine. even the examples in mhatest folder works too. shall i add some other commands before mhacontrol?
errror

wavrec optional caliblevel

wavrec implicitly uses a caliblevel of 93.979 dB SPL.
A new variable to optionally change it would be desirable to allow keeping the values in the range between -1 and 1.

wavrec ring buffer

Mir ist aufgefallen, dass am Ende einer Serie von Aufnahmen immer das
Ende der vorherigen Aufnahme gespeichert wird.
Eventuell ein Problem mit einem Ringpuffer?

Beispiel:

Reale Abfolge: ABCDEFGHIJK
Aufnahme 1: ABC_
Aufnahme 2: EFGD
Aufnahme 3: IJKLH

strmatch is obsolete in struct2mhacfg.m

From the getting started guide, it says to call mha_set(openmha, 'cmd', 'start'); but I get a warning: strmatch is obsolete; use strncmp or strcmp instead. This should be fixed in this file and any other file that uses strmatch() to strncmp(str1, str2, num_chars_to_match).

mhacontrol unexpectedly resets jack connections

Yesterday, during the preparation for the workshop, we found that the GUI (mhacontrol) in version v4.5.5 unexpectedly disconnects the JACK connections from and to the MHA when connecting to the MHA via network. This was on Windows using GNU/Octave 4.2.2. (or maybe 4.2.1).

We then tried openMHA version v4.5.4 which shows the expected behavior, leaving existing connections untouched.

Compiling failure for `aarch64` (ARMv8 64 bit ARM architecture)

Compiling the latest version from source on a machine with uname -m = aarch64 fails due to what appears to be a few flags not being set / not being set correctly.

  • Specifically, the gtfb_simd module (which should only be compiled for x86) is being built (and failing).
  • I also wonder if other ARM specific optimizations and choices are not being set up correctly (like using NEON)

Is this if statement missing some braces.

--- i/mha/libmha/src/mha_error.cpp
+++ w/mha/libmha/src/mha_error.cpp
@@ -116,10 +116,11 @@ MHA_Error::MHA_Error(const char* s_file,int l,const char* fmt,...)
     std::string module(s_file);
     if( module.find_last_of("/\\") < module.size() )
        module.erase(0,module.find_last_of("/\\")+1);
-    if( module.find_first_of(".") < module.size() )
+    if( module.find_first_of(".") < module.size() ) {
        module.erase(module.find_first_of("."),module.size()-module.find_first_of("."));
        module.insert(0,"(");
        module += ") ";
+    }
     len += module.size();
     msg = new char[len+1];
     vsnprintf(msg,len+1,fmt,ap);```

osc2ac documentation invalid

documentation (and previous versions) of osc2ac allow specification of an ac variable name by writing

vars = [acname:/oscpath]

According to the documentation this will create the MHA AC variable "acname" for the OSC path "/oscpath". However, a variable "acname:/oscpath" is created.

Native compilation Matlab Coder Example 23 Error

Hi :)

I've tried to replicate the Matlab Coder Example 23 on the native compilation method. Generating the C-Code using make.m worked fine. I did not do any changes to process.m. After copying the content of codegen/lib/process/ to my own folder "mha/plugins/steffensplugin" as well as the content of plugin_skeleton (+renaming the file matlabcoder_skeleton.cpp to steffensplugins.cpp) I tried "make install" and got the following:

[...]
make[2]: Leaving directory '/home/steffen/Documents/openMHA/mha/plugins/adaptive_feedback_canceller'
make -C steffensplugin
make[2]: Entering directory '/home/steffen/Documents/openMHA/mha/plugins/steffensplugin'
g++ -Wmisleading-indentation -Wlogical-op -Wduplicated-cond -Wduplicated-branches -Wformat-signedness -Wall -Wextra -Wnon-virtual-dtor -Wformat -Werror -std=c++17 -fPIC -O3 -msse -msse2 -mfpmath=sse -ffast-math -fomit-frame-pointer -fno-finite-math-only -g -isystem /home/steffen/Documents/openMHA/external_libs/x86_64-linux-gcc-9/include -I../../libmha/src -c -o x86_64-linux-gcc-9/steffensplugin.o steffensplugin.cpp
In file included from steffensplugin.cpp:21:
steffensplugin.cpp: In function ‘int MHA_DYNAMIC_MHAInit(algo_comm_t, const char*, void**)’:
../../libmha/src/mha_plugin.hh:559:60: error: no matching function for call to ‘matlabcoder_skeleton_t::matlabcoder_skeleton_t(algo_comm_t&, const char*&)’
559 | *handle = new classname(algo_comm,algo_name);
| ^
../../libmha/src/mha_plugin.hh:655:5: note: in expansion of macro ‘MHAPLUGIN_INIT_CALLBACKS_PREFIX’
655 | MHAPLUGIN_INIT_CALLBACKS_PREFIX(prefix,classname)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../libmha/src/mha_plugin.hh:754:3: note: in expansion of macro ‘MHAPLUGIN_CALLBACKS_PREFIX’
754 | MHAPLUGIN_CALLBACKS_PREFIX(MHA_DYNAMIC_,classname,indom,outdom)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
steffensplugin.cpp:117:1: note: in expansion of macro ‘MHAPLUGIN_CALLBACKS’
117 | MHAPLUGIN_CALLBACKS(matlabcoder_skeleton, matlabcoder_skeleton_t, wave, wave)
| ^~~~~~~~~~~~~~~~~~~
steffensplugin.cpp:40:3: note: candidate: ‘matlabcoder_skeleton_t::matlabcoder_skeleton_t(algo_comm_t&, const string&, const string&)’
40 | matlabcoder_skeleton_t(algo_comm_t & ac,
| ^~~~~~~~~~~~~~~~~~~~~~
steffensplugin.cpp:40:3: note: candidate expects 3 arguments, 2 provided
make[2]: *** [../../../rules.mk:45: x86_64-linux-gcc-9/steffensplugin.o] Error 1
make[2]: Leaving directory '/home/steffen/Documents/openMHA/mha/plugins/steffensplugin'
make[1]: *** [../../rules.mk:105: steffensplugin] Error 2
make[1]: Leaving directory '/home/steffen/Documents/openMHA/mha/plugins'
make: *** [Makefile:49: mha/plugins] Error 2

What am I missing? The error says that I'm trying to call a function which is not there, right? But was I supposed to make changes to the code in this example?

In the Manual it says:

The user then has to manually add MHAParser::* configuration variables and translate them
to appropriate types and pass them to the generated code when calling the signal processing
functions

Since the function (channel switch) does not involve any configuration variables I do not need to add this right?

Best regards,

Steffen

Installation - Make halts

On fresh win64 machine, followed
Prerequisites, Preparation and compilation to and including writing make
Make exists at the point and with the message seen in attached image
Please send a direct message to me as soon as you can with what I should try next

missingdll_missingljack
)

Install Location MacOS

Hello,

I went through the installation process and installed this version from 4.11. Where is openMHA installed on my computer? I can't seem to locate 4.12.

Thank you

Compile and install

Hi,
when I run the "./configure && make install" code in mingw64 I got this message.
I use windows 10, 64-bit

$ ./configure && make install
PLATFORM=MinGW
DYNAMIC_LIB_EXT=.dll
ARCH=x86_64
PREFIX=/home/Admin/openMHA
./configure: line 132: pkg-config: command not found
WITH_JACK=yes
WITH_EIGEN=yes
CXXSTANDARD=c++17
GCC_VER=-10
BUILD_DIR=x86_64-MinGW-gcc-10
CXXFLAGS+=-Wmisleading-indentation -Wlogical-op -Wduplicated-cond -Wduplicated-branches -Wformat-signedness
CFLAGS+=-Wmisleading-indentation -Wlogical-op -Wduplicated-cond -Wduplicated-branches
SSE+=-msse -msse2 -mfpmath=sse
OPTIM=-O3 $(SSE) -ffast-math -fomit-frame-pointer -fno-finite-math-only
CXXFLAGS+=-Wall -Wextra -Wnon-virtual-dtor -Wformat -Werror -std=$(CXXSTANDARD) -fPIC $(OPTIM) -g
CFLAGS+=-Wall -Wextra -Werror -std=gnu11 -fPIC $(OPTIM) -g
make -C external_libs
make[1]: Entering directory '/home/Admin/openMHA/external_libs'
git clone https://github.com/chriskohlhoff/asio network-asio
fatal: destination path 'network-asio' already exists and is not an empty directory.
make[1]: *** [Makefile:123: network-asio/.gitignore] Error 128
make[1]: Leaving directory '/home/Admin/openMHA/external_libs'
make: *** [Makefile:52: external_libs] Error 2

what should I do?

A quick question about the mvdr filter

This is more of a question than an issue. I tried your example 06-binaural-beamformer and noticed it used a mvdr filter. I was wondering how you guys generate the filter file. I read your documents and failed to find the answer. Could you provide some hints? Thanks much!

Regards,
Sanqing

Cannot download source code.zip

Hi,
I am very new to openMHA. So to start with, I tried to download the source code.zip and source code.tar files to have the glimpses of the programming from the link,
https://github.com/HoerTech-gGmbH/openMHA/releases

But everytime I downloaded the file, it downloads the installer.exe files and not the C files.
If somebody has any other way to download the same please let me know.

RPI zero?

Hi,
I have done some development on the PIZero(w) with the audioinjector zero (http://www.audioinjector.net/rpi-zero).

Due to the size, it might be a better fit for some live testing. Any idea if the single-core zero (w/ only 512MB RAM) could handle the load of this? No time to play around with it now, but might be an interesting experiment, assuming the SW is not multi-threaded or has processing constraints.
Johnny

public key not available

Err:6 http://apt.hoertech.de jammy InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7D6CDF547DA4ABD

This kind of error occurs whenever updating the repository.

Sound energy estimation

Hi

I am someone interested in acoustic algorithm. When I tracked the OpenMHA source code for dc.cpp (dynamic compression), I saw the energy estimation as follows
2019-02-19 11 33 34
I can understand that in addition to DC bin and Nyquist bin, other bins need to be multiplied by 2. But according to Parseveal's theorem, I think DC bin and Nyquist bin should be multiplied by 1. Can you tell why you decided to multiply by 0.5 for energy estimation?

best regards

MHAIOalsa Read Failed error while connected to MATLAB

I have openMHA installed and running, and I have been able to get a live passthrough working with the iolib: MHAIOalsa. Though once I connect openMHA to MATLAB over Ethernet it will start displaying read and write errors when I try to change parameters in the filter menu. Is there a way around this error? Also is the fitting dialog not supposed to make live changes to openMHA?

alsaReadError

OpenMHA gui (pseudo)gain table for 3 channels

Hey thanks for the previous issue about the bash script!

Apparently, i'm using three channel inputs and two outputs. I'm struggling on setting the output to two only, since nchannels_out cannot be set. Well, I decided to leave one of the channels disconnected.

Now I'm having a dilemma with fitting the hearing aid from the gui. It only accepts two channels, which I would normally expect. What I can't figure out is how to modify the m files such that the first two channels are allotted for left and right and the third always set to zero gains? This is because the system uploads a gaintable of size 9 or 18, instead of size 27.

Really appreciate your help, thank you :).

problems with mhacontrol

Hi,
first of all, I use mha the first time. Therefore, my problems may be rather simple.

I started mhacontrol with octave and the gui opens as expaxcted, but, however, the 'levels' button is missing. Furthermore, the fitting cannot be done properly. After selecting an audiogram and clicking ok, an error occurs "no fittable plugins available", and you are back in the mhacontrol-gui. Did I forget anything during the installation step?

Throw error when in "stopped" status and attempting to change configuration

Scenario: Processing one file, changing some settable host/plugin-variable, and then try to process the MHA again with "start" cmd.

Expected behaviour: Throw an error, because after the "stop" cmd mha is in a state, where its configuration cannot be changed (See Fig. 2, Application manual. You can write arguments, but it does not change things, until the mha was "released" and "prepared" once.

Actual behaviour: configuration arguments gets accepted without errors, but will not be evaluated. For the user it looks like there was no error in the processing chain, but the output will not be as expected. Very difficult to debug scenario here.

Example: Change outputfile-destination, after the mha has run once. This does not work, because the io.out-file is not correctly prepared. Working directory is mha/examples/01-dynamic-compression. "cmd?" are in there to "debug" the mha state.
mha ?read:example_dc.cfg cmd=start cmd? cmd=stop io.out=1speaker_out.wav cmd? cmd=start cmd? cmd=stop cmd=quit

adding release and prepare command and it works:
mha ?read:example_dc.cfg cmd=start cmd? cmd=stop io.out=1speaker_out.wav cmd? cmd=release cmd=prepare cmd=start cmd=stop cmd=quit

It would be nice, if it is needed to do the following (changing to "released" state before changing configurations):
mha ?read:example_dc.cfg cmd=start cmd? cmd=stop cmd=release io.out=1speaker_out.wav cmd=prepare cmd=start cmd=stop cmd=quit

Installation on CentOS

Thanks a lot for this tool, it looks great!

Is there a simple way to install it on CentOS, without sudo rights?
Thanks in advance

java error, Running mhatest file on Matlab on Mac.

Hello
I am not sure if this is the right platform to discuss problems about using MHA. If not then it will be great if someone can point me to either mailing list, forum for discussion.

I am trying to start mha via Matlab.
I am trying to run one of the mhatest file and I get the following error -
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Java exception occurred:
java.io.IOException: Cannot run program "mha": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:485)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 2 more

Error in shiftingTry (line 36)
mha = mha_start;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Things that I have tried -

  • Make sure that javaaddpath adds the mhactl_java.jar file to the Matlab path.

  • It seems that the mha.exe file cannot be located. So I tried adding it explicitly to Matlab path. I have already added javaaddpath to my Matlab path but get the error- which it seems it can not find the mha.exe. Even if I do explicitly add mha.exe even then it can not locate it.

  • I can run mha with one of the example config files in Terminal. I can also run mha GUI by mhacontrol localhost in Matlab but only after starting mha in terminal. But if I try to start-up one of test file for examples. test_runexample01a.m I get the error shown above.

Thanks a lot in advance !

Is it possible to access a monitor variable for an external bash script?

I'm working with a system that's supposed to automatically optimize the configuration after a long silent period. It would mean that I have to check the presence of a signal and run a different cfg file. I was wondering if it were possible to compare a monitor variable that has the average amplitude of an audio block to a threshold value that I defined. I would want this to happen at a bashrc loop so that I could freely switch between the two configurations, well of course I would naturally have to stop the current cfg file to give way to the other. But I want to know how it would be possible to read monitor variables from the bash script, because I might have misinterpreted the manual to be limited by plugin-to-plugin case only. Thank you.

Pardon my insufficient knowledge, if ever this was a no-brainer for someone who has read the manual.

mhacontrol resets calibration

When connecting to openMHA with the Octave-based GUI (mhacontrol.m) the calibration provided in the configuration file is overwritten with default values.
This is unexpected behavior.

As a result openMHA can only be calibrated xor fitted but not calibrated and fitted.

No output from MHA (anymore) on Ubuntu 18.10

I currently don't get any output from the MHA process on Ubuntu 18.10 on my Notebook, which I tested with various versions of openMHA from 4.6.0 to 4.8.1. The process runs but the output is zero.
Interestingly, recordings with "wavrec" are empty.

This morning, I saw the same behavior on a Notebook of a student with Ubuntu 18.10 who installed openMHA from the repository, which is why I report it here.
Currently I don't know what the reason could be and I will add any related information once I have a clue.

An example config which does not produce any output different from zero is the following:

nchannels_in = 1
fragsize = 1024
srate = 48000
mhalib = iirfilter
mha.A = [1.0]
mha.B = [1.0]
iolib = MHAIOJack
cmd=start

Plugin development pipeline

Hello!

What a fascinating project!

Do you have any recommendations on creating a pipeline for developing a plugin? How might one consume this project for plugin development?

I believe a plugin developer needs to include mha_plugin.hh and link to libopenmha.*, correct?

Am I correct that neither the pre-compiled binary package nor the install target exposes mha_plugin.hh? If so, would you recommend that a plugin developer explicitly includes ${openmha_root}/mha/libmha/src in their build-system?

Thanks for your help.

fftw-2.1.5 directory listed inside .gitignore but already present in the repository

I noticed that the 'fftw-2.1.5' directory was added to the '.gitignore' file inside the 'external_libs' folder after it had already been added and committed to the repo. If the folder is not meant to be tracked, why not remove it from the repo? I find it quite annoying that the 'confgure' file inside this folder changes after building the project and hence appears as 'modified' in my working directory.

cannot find the openMHA libraries and openMHA bin directory

Hi,
I am trying to compile the openmha through mingw.
in the compilation document, it is written the
copy openMHA libraries into the openMHA bin directory: mv lib/* bin/

but there are no such folders in openMHA.
should I create them?

max_lag calculation in example 09 (localizer-steering-beamformer)

Dear Hendrik,

Regarding the mvdr filter stored in "MVDR_iso_norm_bte_16KHz_4ch_lr_FFT512_-180-5-180.txt". You mentioned it was generated by using Matlab scripts. I guess it is mcriophone-array dependent. Since you will release the Matlab script for mvdr filter in the next github update, is it possible that you can send me a copy in advance if you already have it in hand? I want to try it on a two mics array.

When I proceed to 09-example (localizer-steering-beamformer) I have difficulties in understanding the following 2 steps:

  1. For the class doasvm_feature_extraction, there is a member "max_lag" (Maximum lag in samples between microphones), you initiate it with value 2 or 20. I guess 2 is for the pair of mics with the distance of 0.0149m. This is correct for sampling rate of 48k but in this example it did a resampling and the sampling rate was changed to 16k. Below is the calculation:
    (0.0149 / 343) * 48000 = 2.085 samples.
    For a sampleing rate of 16000, it will be 0.695 sample.

  2. For the class doasvm_classification, it needs the data from file "matrices_4channel_front-rear_bte.cfg" to initiate its member w, b, x and y. I read your paper "A discriminative learning approach to probabilistic acoustic source localization" and got some ideas about how to generate those data, but still not certain. Did you record sound from all 73 directions and use them as input files for doasvm_feature_extraction to generate training data? Which liblinear command you used for training? Where did you get the data for x and y? Maybe I understand it all wrong. It will be great help if you can shed some light on this.

Thanks again for your time and the openMHA project from which I learn a lot.

Regards,
Sanqing

example21 doesn't compile

The example21.cpp was not yet adapted to latest openMHA API, thus a compilation fails (invalid number of parameters of plugin constructor, warnings about unused parameters treated as errors due to -Werror).
Tested with version 4.17.0.

Figure 1 in dc plugin documentation depicts incorrect interpolation between mesh points

The plugin documentation (see file openMHA_plugins.pdf) contains a plot (Figure 1) to illustrate the compression derived in plugin dc from configuration variables.

This plot suggests that the gains would be interpolated linearly between mesh-points in a log-log plot, but this is not what the dc plugin actually computes: The plugin converts the configured gains at the given mesh points from dB to linear factors, and interpolates the linear factors depending on the current input level in dB.

Configurations using this plugin should choose a small step size gtstep to avoid unexpected interpolation results. The Octave/Matlab fitting tool configures a step size of 1 dB which produces a sufficiently dense lookup table so that the resulting gains do not produce unexpected gains.

We will correct the documentation in the next release.

Error when loading transducers.so library on Ubuntu 17.10

MHA reports exits with the following error

Error: (mha_parser) (mha_os) Unable to resolve function "MHAGetVersion" in library transducers.so.

I think with Ubuntu 17.04 this did not happen.
Any ideas how to work around this issue?
I tried compiling with gcc version 6 instead of 7, which did not help.

Bluetooth remote mic

Hello,

With newer hearing aids such as Oticon Opn supporting bluetooth connectivity, do you have any plans to work on an open source project to develop a do-it-yourself remote mic or interconnected table mic's for meetings similar to Phonak's Roger Mics or Oticon ConnectClip? This mic would stream audio to the bluetooth hearing aids.

This would greatly help with understanding speech in noise, in meetings, and understanding speech from distance lecturers.

Thanks!

installing openMHA

Hello,

I am a first year PhD student at the university of Warwick. I would like to use your software for my project. I was wondering whether you provide this software on virtualbox on windows operating system or not. because it would be easier to work on one operating system compared two (Linux and Windows). In other words, can I install openMHA on virtualbox on windows or it should be installed only on a seperate Linux operating system?

Kind Regards,
Negar

Unable to install openmha on ubuntu 20.04

This may not be an issue but when following the installation instructions for Linux Ubuntu (see https://github.com/HoerTech-gGmbH/openMHA/blob/master/INSTALLATION.md)
Here is the sequence:

`ubuntu@ubuntu:/Desktop$ wget -qO- http://apt.hoertech.de/openmha-packaging.pub | sudo apt-key add -
OK
ubuntu@ubuntu:
/Desktop$ sudo apt-add-repository 'deb [arch=amd64] http://apt.hoertech.de focal universe'
Hit:1 http://apt.hoertech.de bionic InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports focal InRelease
Hit:3 http://ports.ubuntu.com/ubuntu-ports focal-updates InRelease
Hit:4 http://apt.hoertech.de focal InRelease
Hit:5 http://ports.ubuntu.com/ubuntu-ports focal-backports InRelease
Hit:6 http://ports.ubuntu.com/ubuntu-ports focal-security InRelease
Reading package lists... Done
ubuntu@ubuntu:~/Desktop$ sudo apt install openmha openmha-examples
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package openmha is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'openmha' has no installation candidate
ubuntu@ubuntu:~/Desktop$
`
Am I missing a step?

Thanks in advance.

JE

Problem in Windows 10 with 4.13.0 and JACK 1.9.16 win64.

Hi,

I'm having issue with version 4.13.0 (2609ffd) / JACK 1.9.16 win64 in Windows 10.

mha is working normally in windows after compiled according to the instructions in https://github.com/HoerTech-gGmbH/openMHA/blob/master/COMPILATION.md#iii-compilation-on-64-bit-windows-advanced. gain_getting_started.cfg works normally, but gain_live_getting_started.cfg exits abnormally.

F:\examples\00-gain>mha --interactive
The Open Master Hearing Aid (openMHA) server version 4.13.0 (2609ffdf215b)
Copyright (c) 2005-2020 HoerTech gGmbH, D-26129 Oldenburg, Germany

This program comes with ABSOLUTELY NO WARRANTY; for details see file COPYING.
This is free software, and you are welcome to redistribute it
under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE, Version 3;
for details see file COPYING.

mha [1] ?read:gain_getting_started.cfg
(MHA:success)
mha [2] cmd=start
(MHA:success)
mha [3] cmd=quit
(MHA:success)

F:\examples\00-gain>mha --interactive
The Open Master Hearing Aid (openMHA) server version 4.13.0 (2609ffdf215b)
Copyright (c) 2005-2020 HoerTech gGmbH, D-26129 Oldenburg, Germany

This program comes with ABSOLUTELY NO WARRANTY; for details see file COPYING.
This is free software, and you are welcome to redistribute it
under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE, Version 3;
for details see file COPYING.

mha [1] ?read:gain_live_getting_started.cfg
(MHA:success)
mha [2] cmd=start

F:\examples\00-gain>echo %errorlevel%
-1073741819

Document "nop" state of MHA

The "nop" state of MHA is missing in the Application manual, but listed as a possible keyword of "cmd"
mha cmd?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.