all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: nathan via <help-guix@gnu.org>
To: contact@robbyzambito.me, help-guix@gnu.org
Subject: Using NoiseTorch with Sway and Polkit
Date: Sun, 30 Jul 2023 19:08:38 -0400	[thread overview]
Message-ID: <87r0opkmql.fsf@nborghese.com> (raw)
In-Reply-To: <874jm02586.fsf@robbyzambito.me>

[-- Attachment #1: Type: text/plain, Size: 606 bytes --]

You can add the capabilities manually if you copy the binary out of the store.
sudo setcap 'CAP_SYS_RESOURCE=+ep' ./whatever/filepath
Capabilities will be integrated into guix later:
https://lists.gnu.org/archive/html/guix-patches/2023-02/msg00700.html

But even then, the package doesn't work with PulseAudio due to incorrect ladspa plugin name.
The attached files contain the fix I use.

Because you use pipewire, it's possible NoiseTorch will work without my patch. I think it's still required.
But noise-supression-for-voice also easily supports pipewire without NoiseTorch, so you can just use that.


[-- Attachment #2: noisetorch.scm --]
[-- Type: application/octet-stream, Size: 3377 bytes --]

;; this file and the corresponding noisetorch-ng.patch file are public domain
;;
;; build with
;;   guix build -f ./noisetorch.scm
;; then copy the executable out of the store manually and add capabilities.
;;   sudo setcap 'CAP_SYS_RESOURCE=+ep' ./whatever/filepath
;; capabilities will be integrated later:
;; https://lists.gnu.org/archive/html/guix-patches/2023-02/msg00700.html
(use-modules
 (guix utils)
 (guix packages)
 (guix gexp)
 (guix git-download)
 (gnu packages pkg-config)
 (gnu packages xorg)
 (gnu packages pulseaudio))
;; an updated version of noise-supression-for-voice.
;; this features "VAD Grace Period" and "Retroactive VAD Grace Period," allowing you to add grace time around voice before clipping audio.
(define-public noise-suppression-for-voice-updated-ladspa-only
  (package
   (inherit noise-suppression-for-voice)
   (name "noise-suppression-for-voice")
   (version "1.03")
   (source
    (origin
     (method git-fetch)
     (uri (git-reference
           (url "https://github.com/werman/noise-suppression-for-voice")
           (commit (string-append "v" version))))
     (file-name (git-file-name name version))
     (sha256
      (base32 "1aarsbjxha9ipkgk28inbcrbch118x80d7i7kakkcpp2fig4n0i8"))))
   (arguments
    (substitute-keyword-arguments
     (package-arguments noise-suppression-for-voice)
     ((#:configure-flags flags #~'())
      ;; these require building some big library called JUCE, which is not part of guix yet.
      #~(cons* "-DBUILD_VST_PLUGIN=off" "-DBUILD_VST3_PLUGIN=off" "-DBUILD_LV2_PLUGIN=off" "-DBUILD_AU_PLUGIN=off" "-DBUILD_AUV3_PLUGIN=off" #$flags))))))

;; properly rename NoiseTorch to NoiseTorch-ng.
;; https://github.com/noisetorch/NoiseTorch/issues/328
;; this is done in the master branch, but not the latest release of noisetorch-ng.
(define-public noisetorch-ng
  (package/inherit noisetorch
    (name "noisetorch-ng")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/noisetorch/NoiseTorch")
             (commit "254802e1a09efeef2e75bc862f9f342613d00fcc")))
       (sha256
        (base32 "1sw7jm60bprhl37iy3vl5ig4zp7q0k0vf8xj6cq396d8khl8mgpb"))))
    (arguments
     (substitute-keyword-arguments
         (package-arguments noisetorch)
       ((#:phases phases #~%standard-phases)
        #~(modify-phases #$phases
            (add-after 'install 'rename-binary
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out")))
                  (rename-file (string-append out "/bin/NoiseTorch") (string-append out "/bin/noisetorch-ng")))))))))))

(define-public noisetorch-ng-nathan
  (package/inherit noisetorch-ng
    (version (string-append (package-version noisetorch-ng) ".1"))
    (source
     (origin
       (inherit (package-source noisetorch-ng))
       ;; - fix ladspa plugin name
       ;; - provide extra parameters required for updated noise-supresssion-for-voice to work.
       ;;   VAD Grace Period=1000
       ;;   Retroactive VAD Grace Period=50
       (patches (cons "./noisetorch-ng.patch"
                      (origin-patches (package-source noisetorch-ng))))))
    (inputs (modify-inputs
                (package-inputs noisetorch-ng)
              (replace "noise-suppression-for-voice" noise-suppression-for-voice-updated-ladspa-only)))))

noisetorch-ng-nathan

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: noisetorch-ng.patch --]
[-- Type: text/x-patch, Size: 1920 bytes --]

diff --git a/module.go b/module.go
index 6e69a7e..dd38275 100644
--- a/module.go
+++ b/module.go
@@ -200,7 +200,7 @@ func loadPipeWireInput(ctx *ntcontext, inp *device) error {
 	idx, err := loadModule(ctx, "module-ladspa-source",
 		fmt.Sprintf("source_name='Filtered Microphone for %s' master=%s "+
 			"rate=48000 channels=1 "+
-			"label=nt-filter plugin=%s control=%d", inp.Name, inp.ID, ctx.librnnoise, ctx.config.Threshold))
+			"label=noise_suppressor_mono plugin=%s control=%d,1000,50,0,0", inp.Name, inp.ID, ctx.librnnoise, ctx.config.Threshold))
 
 	if err != nil {
 		return err
@@ -214,7 +214,7 @@ func loadPipeWireOutput(ctx *ntcontext, out *device) error {
 	idx, err := loadModule(ctx, "module-ladspa-sink",
 		fmt.Sprintf("sink_name='Filtered Headphones' master=%s "+
 			"rate=48000 channels=1 "+
-			"label=nt-filter plugin=%s control=%d", out.ID, ctx.librnnoise, ctx.config.Threshold))
+			"label=noise_suppressor_mono plugin=%s control=%d,1000,50,0,0", out.ID, ctx.librnnoise, ctx.config.Threshold))
 
 	if err != nil {
 		return err
@@ -233,7 +233,7 @@ func loadPulseInput(ctx *ntcontext, inp *device) error {
 
 	idx, err = loadModule(ctx, "module-ladspa-sink",
 		fmt.Sprintf("sink_name=nui_mic_raw_in sink_master=nui_mic_denoised_out "+
-			"label=nt-filter plugin=%s control=%d", ctx.librnnoise, ctx.config.Threshold))
+			"label=noise_suppressor_mono plugin=%s control=%d,1000,50,0,0", ctx.librnnoise, ctx.config.Threshold))
 	if err != nil {
 		return err
 	}
@@ -276,7 +276,7 @@ func loadPulseOutput(ctx *ntcontext, out *device) error {
 	}
 
 	_, err = loadModule(ctx, "module-ladspa-sink", fmt.Sprintf(`sink_name=nui_out_ladspa sink_master=nui_out_out_sink `+
-		`label=nt-filter channels=1 plugin=%s control=%d rate=%d`,
+		`label=noise_suppressor_mono channels=1 plugin=%s control=%d,1000,50,0,0 rate=%d`,
 		ctx.librnnoise, ctx.config.Threshold, 48000))
 	if err != nil {
 		return err

      reply	other threads:[~2023-08-04 19:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-18 22:45 Using NoiseTorch with Sway and Polkit Robby Zambito
2023-07-30 23:08 ` nathan via [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r0opkmql.fsf@nborghese.com \
    --to=help-guix@gnu.org \
    --cc=contact@robbyzambito.me \
    --cc=nathan_mail@nborghese.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.