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
prev parent 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.