GRIS-UdeM / SpatGRIS

Sound spatialization tool
GNU General Public License v3.0
59 stars 4 forks source link

Le binaural: besoin d'un algorithme plus convaincant! #190

Open Normandeau opened 4 years ago

Normandeau commented 4 years ago

Je travaille pas mal avec le binaural ces jours-ci, puisque dans le cadre de mon cours d'histoire, j'avais l'habitude de présenter des concerts chaque semaine, ce qui est impossible avec la COVID-19. Je simule donc le concert en studio et je partage le fichier binaural résultant de ma spatialisation manuelle avec les étudiants. Le résultat? Pas très convaincant! (Chut, ne leur dites pas...). Entre ça et un mixage stéréo frontal, je ne vois pas beaucoup de différence honnêtement. Je possède ce qui est considéré comme le meilleur casque Bluetooth sur le marché (Sony WH-1000XM3) et la qualité de l'image stéréophonique est très précise (il y a même une fonction de mesure de la forme de mes oreilles!). J'ai aussi un mode immersif qui vient avec (que je laisse désactivé dans ces tests). Pour différencier la provenance d'un son, je dois me limiter à faire des gestes très radicaux, genre avant-arrière, haut-bas, etc. Tout ce qui est fluide est devant et stéréo. Il doit bien y avoir un algorithme plus performant que que celui, apparemment générique, que nous utilisant actuellement, non? Comme c'est un des arguments de vente de nos outils soit la possibilité de les utiliser à la maison (je travaille sur une demande de subvention en ce moment...), il va falloir que ça soit pas mal plus performant pour convaincre la clientèle! Sinon, on risque de faire face à des demandes de remboursement massive... ;-)

catrochemusic commented 4 years ago

Hi, just read your comment on binaural mixes in ServerGRIS. How about integrating a headtracker and HRTF functions? There’s a Facebook group called ‘Headtracked Binaural’ where you can find out current info on available kits and plugin combinations.  Cathal 

belangeo commented 4 years ago

Salut,

Mon petit 2 cents...

Pour le binaural, on a opté pour un VBAP à 16 canaux suivi d'une HRTF fixe sur ces 16 canaux pré-positionnés. Deux possibilités d'amélioration rapides:

1) 16 canaux c'est peu (on en avais déjà discuté), j'irais plutôt avec au moins 32 (ça représente le nombre de positions possibles dans la demi-sphère). 2) Les impulses HRTF utilisées sont la version à 128 samples (les originaux font 512 samples). Plus il y a de samples dans une convolution, plus la précision est bonne...!

Dans les deux cas, il y aura un coût substantiel en CPU...

Olivier

On Tue, Sep 8, 2020 at 10:56 AM Robert Normandeau notifications@github.com wrote:

Je travaille pas mal avec le binaural ces jours-ci, puisque dans le cadre de mon cours d'histoire, j'avais l'habitude de présenter des concerts chaque semaine, ce qui est impossible avec la COVID-19. Je simule donc le concert en studio et je partage le fichier binaural résultant de ma spatialisation manuelle avec les étudiants. Le résultat? Pas très convaincant! (Chut, ne leur dites pas...). Entre ça et un mixage stéréo frontal, je ne vois pas beaucoup de différence honnêtement. Je possède ce qui est considéré comme le meilleur casque Bluetooth sur le marché (Sony WH-1000XM3) et la qualité de l'image stéréophonique est très précise (il y a même une fonction de mesure de la forme de mes oreilles!). J'ai aussi un mode immersif qui vient avec (que je laisse désactivé dans ces tests). Pour différencier la provenance d'un son, je dois me limiter à faire des gestes très radicaux, genre avant-arrière, haut-bas, etc. Tout ce qui est fluide est devant et stéréo. Il doit bien y avoir un algorithme plus performant que que celui, apparemment générique, que nous utilisant actuellement, non? Comme c'est un des arguments de vente de nos outils soit la possibilité de les utiliser à la maison (je travaille sur une demande de subvention en ce moment...), il va falloir que ça soit pas mal plus performant pour convaincre la clientèle! Sinon, on risque de faire face à des demandes de remboursement massive... ;-)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/GRIS-UdeM/ServerGRIS/issues/190, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABXKJTH5CR5WDS6GD7Y7TADSEZAZFANCNFSM4RACWNEQ .

marclava commented 4 years ago

Je ne fais pas partie de votre équipe, mais j'ai aussi un 2 sous.

Oui, le nombre de canaux est important, mais peut-être plus le HRTF, et pas nécessairement avec plus d'échantillons. Un HRTF générique ne permet pas de contenter tout le monde...

Vous pourriez essayer le plugin Binauraliser de la suite SPARTA, qui me semblerait tout indiqué: http://research.spa.aalto.fi/projects/sparta_vsts/plugins.html Il permet de charger des profils SOFA (donc aussi des profils personnels) et supporte la rotation (pour des "headtrackers").

(N.B. j'ai participé au projet SPARTA, et j'ai un projet de headtracking).

Normandeau commented 4 years ago

Merci Marc,

J'avais déjà spotté cela, mais sans aller trop loin. Cela vient de l'université de Ville Pulkki, le développeur du VBAP. À suivre.

Normandeau commented 3 years ago

V214 Nicola: Ce n’est pas exactement un bug, mais je signale que le mode Binaural ne prend pas en compte la distance. Alors si on travaille en mode Cube et on passe en mode Binaural, les sources restent sur la surface du dôme. J’imagine que cela est dû au fait que le mode Binaural est basé sur l’algorithme Vbap. Peut-être, on pourrait le mentionner dans une version prochaine du manuel. (J'ai indiqué la version actuelle de SpatGRIS, mais cela se produit aussi avec la 212.)

Robert: Le mode binaural reste à être raffiné. Effectivement, actuellement c'est une version VBAP qui est ramené à deux sources en mode binaural. Il faudrait éventuellement avoir un mode binaural authentique pour le CUBE.

Normandeau commented 3 years ago

V2112 Version nettement améliorée ici.

Normandeau commented 2 years ago

V311 Ce qui frappe à l'oreille avec le mode binaural actuel c'est la différence de couleur timbrale qui est considérable. Spectre de bruit rose en Dome, Cube ou en Stereo: courbe à peu près plate:

Capture d’écran, le 2021-12-20 à 16 53 46

Le même spectre en Binaural: courbe avec un écart de ± 5dB:

Capture d’écran, le 2021-12-20 à 16 54 00

C'est vraiment énorme.

marclava commented 2 years ago

Si je peux me permettre: une possible méthode pour vérifier si c'est un "problème" serait de comparer quelques mesures d'une installation existante, d'abord avec un omni (une seule mesure) puis avec un micro binaural (dummy head ou "in-ears"); il est probable que cette différence soir le propre d'un rendu binaural.

Normandeau commented 2 years ago

Il n'y a pas à proprement parler de micro binaural «intègre» si je puis dire. J'ai eu l'occasion d’enregistrer ma pièce d'orchestre il y a deux semaines avec le micro binaural Neumann et le résultat est exceptionnel. Au prix qu'il coûte c'est un à quoi on s'attend. Une solution logicielle de cette qualité couterait probablement très cher en... CPU!

marclava commented 2 years ago

Je ne proposais pas d'égaler de manière logicielle la qualité d'une prise directe, mais juste de vérifier si un rendu binaural a généralement ce genre de réponse spectrale, soit à partir d'une capture binaurale ou même d'une émulation du Binauraliser de la suite Sparta (qui par ailleurs peut utiliser des HRTFs produites à partir de mesures du Neumann KU-100 au format SOFA: https://www.sofaconventions.org/mediawiki/index.php/Files)

belangeo commented 2 years ago

Mon p'tit deux cents!

Yep, le principe même de la binauralisation est d'appliquer des filtres reproduisant le filtrage induit par le corps humain (réflexion sur les épaules, la tête, résonance du conduit auditif, etc.) pour simuler la position du son par rapport à l'auditeur. Donc, la modification du spectre est inévitable... Ceci étant dit, la qualité peut varier en fonction de:

  1. La qualité des HRIR (les kernels de filtre), si c'est encore les HRIR de kemar qui sont utilisés, elles sont correctes sans plus (mais libre de droit, ce qui n'est pas rien). Il y a assurément d'autres banques de meilleure qualité.
  2. La longueur du kernel (nombre de samples par filtre). Si je ne me trompe pas, les mesures de la banque du MIT ont été faites sur 512 échantillons, mais c'est généralement la version compact à 128 échantillons qui est utilisée. Plus les kernels sont longs, plus la localisation est précise, mais watch out le CPU, c'est de la convolution après tout. À 512 échantillons, une bonne implémentation FFT serait plus efficace...

J'ai aussi le souvenir d'une implémentation de la convolution qui "trainait" sur music-dsp où le kernel est divisé en quatre quarts et, par des maths un peu tordus, seulement trois des quarts nécessitent d'être calculés, ça sauve un peu de CPU! Sinon, il faudrait implémenter une convolution full SIMD (Single Instruction, Multiple Data). Dans tous les cas, ça risque de couter cher en temps de développement :/

Olivier

On Mon, Dec 20, 2021 at 5:46 PM Marc Lavallée @.***> wrote:

Je ne proposais pas d'égaler de manière logicielle la qualité d'une prise directe, mais juste de vérifier si un rendu binaural a généralement ce genre de réponse spectrale, soit à partir d'une capture binaurale ou même d'une émulation du Binauraliser de la suite Sparta (qui par ailleurs peut utiliser des HRTFs produites à partir de mesures du Neumann KU-100 au format SOFA: https://www.sofaconventions.org/mediawiki/index.php/Files)

— Reply to this email directly, view it on GitHub https://github.com/GRIS-UdeM/SpatGRIS/issues/190#issuecomment-998326030, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABXKJTD52DIWPHNH4VQ6K4TUR6W2VANCNFSM4RACWNEQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you commented.Message ID: @.***>

belangeo commented 2 years ago

If someone wants to give it a shot!

https://www.musicdsp.org/en/latest/Filters/65-time-domain-convolution-with-o-n-log2-3.html

On Tue, Dec 21, 2021 at 7:19 PM Olivier Bélanger @.***> wrote:

Mon p'tit deux cents!

Yep, le principe même de la binauralisation est d'appliquer des filtres reproduisant le filtrage induit par le corps humain (réflexion sur les épaules, la tête, résonance du conduit auditif, etc.) pour simuler la position du son par rapport à l'auditeur. Donc, la modification du spectre est inévitable... Ceci étant dit, la qualité peut varier en fonction de:

  1. La qualité des HRIR (les kernels de filtre), si c'est encore les HRIR de kemar qui sont utilisés, elles sont correctes sans plus (mais libre de droit, ce qui n'est pas rien). Il y a assurément d'autres banques de meilleure qualité.
  2. La longueur du kernel (nombre de samples par filtre). Si je ne me trompe pas, les mesures de la banque du MIT ont été faites sur 512 échantillons, mais c'est généralement la version compact à 128 échantillons qui est utilisée. Plus les kernels sont longs, plus la localisation est précise, mais watch out le CPU, c'est de la convolution après tout. À 512 échantillons, une bonne implémentation FFT serait plus efficace...

J'ai aussi le souvenir d'une implémentation de la convolution qui "trainait" sur music-dsp où le kernel est divisé en quatre quarts et, par des maths un peu tordus, seulement trois des quarts nécessitent d'être calculés, ça sauve un peu de CPU! Sinon, il faudrait implémenter une convolution full SIMD (Single Instruction, Multiple Data). Dans tous les cas, ça risque de couter cher en temps de développement :/

Olivier

On Mon, Dec 20, 2021 at 5:46 PM Marc Lavallée @.***> wrote:

Je ne proposais pas d'égaler de manière logicielle la qualité d'une prise directe, mais juste de vérifier si un rendu binaural a généralement ce genre de réponse spectrale, soit à partir d'une capture binaurale ou même d'une émulation du Binauraliser de la suite Sparta (qui par ailleurs peut utiliser des HRTFs produites à partir de mesures du Neumann KU-100 au format SOFA: https://www.sofaconventions.org/mediawiki/index.php/Files)

— Reply to this email directly, view it on GitHub https://github.com/GRIS-UdeM/SpatGRIS/issues/190#issuecomment-998326030, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABXKJTD52DIWPHNH4VQ6K4TUR6W2VANCNFSM4RACWNEQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you commented.Message ID: @.***>