مكون إضافي لقمع الضوضاء في الوقت الفعلي للصوت استنادًا إلى Xiph's RNNoise. مزيد من المعلومات حول المكتبة الأساسية.
يهدف البرنامج المساعد إلى منع مجموعة واسعة من مصادر الضوضاء (من الورق الأصلي): مراوح الكمبيوتر، والمكاتب، والحشد، والطائرة، والسيارة، والقطار، والبناء.
من خلال اختباراتي، يتم دائمًا منع الضوضاء الخلفية المعتدلة، ويتم منع الأصوات العالية، مثل النقر على لوحة المفاتيح الميكانيكية، في حالة عدم وجود صوت ولكن يتم تقليل مستوى الصوت فقط عند وجود الصوت.
يرجى ملاحظة أن هذا المكون الإضافي لم يتمكن من تحسين جودة الصوت باستخدام ميكروفون سيئ، بل إنه قد يزيد الأمور سوءًا عن طريق تصنيف الصوت بشكل خاطئ على أنه ضجيج مما قد يقلل من جودة الصوت غير الجيدة بالفعل.
يعمل البرنامج المساعد مع قناة واحدة أو أكثر، 16 بت، 48000 هرتز إدخال الصوت.
❗ ❗ ❗ لا تستخدم أي معدلات عينة أخرى، استخدم فقط 48000 هرتز، وتأكد من أن مصدر الصوت الخاص بك هو 48000 هرتز واجبره على أن يكون 48000 هرتز إذا لم يكن كذلك.
هناك واجهة مستخدم رسومية بسيطة تحتوي على جميع المعلمات والإحصائيات التشخيصية:
أحدث الإصدارات
VAD Threshold (%)
- إذا كان احتمال أن يكون الصوت صوتًا أقل من هذا الحد - فسيتم كتمه. في معظم الحالات، يكون الحد الأدنى بين 85% - 95% مناسبًا. بدون جهاز VAD، قد تظل بعض الأصوات العالية مسموعة قليلاً في حالة عدم وجود صوت.VAD Grace Period (ms)
- المدة التي لن يتم فيها إسكات الإخراج بعد آخر اكتشاف صوتي. يساعد هذا عند قطع نهايات الكلمات/الجمل.Retroactive VAD Grace Period (ms)
- تشبه VAD Grace Period (ms)
ولكن لبداية الكلمات/الجمل.للتحقق من إعدادات الميكروفون أو تغييرها، انتقل إلى "أجهزة التسجيل" -> "التسجيل" -> "خصائص" الميكروفون المستهدف -> "متقدم".
لتمكين المكون الإضافي في Equalizer APO، حدد "Plugins" -> "VST Plugin" وحدد ملف dll الإضافي.
راجع الدليل التفصيلي المقدم من @bssankaran.
منذ الإصدار 0.3.45
يستخدم PipeWire تكوين الملف المقسم، مما يجعل من السهل للغاية إعداد المكونات الإضافية وتكوين القرص.
بالنسبة لإصدار PipeWire الأقدم، يجب عليك نسخ /usr/share/pipewire/pipewire.conf
إلى ~/.config/pipewire/pipewire.conf
ثم إلحاق التكوين أدناه بـ context.modules
الموجود بالفعل.
بالنسبة إلى PipeWire >= 0.3.45
يجب عليك:
~/.config/pipewire/pipewire.conf.d/
~/.config/pipewire/pipewire.conf.d/99-input-denoising.conf
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = /path/to/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 50.0
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]
/path/to/librnnoise_ladspa.so
إلى مسار المكتبة الفعليnoise_suppressor_mono
-> noise_suppressor_stereo
. حتى لو كان الميكروفون الخاص بك يقول أنه استريو - فمن المحتمل أنك لا تحتاج إلى إخراج استريو. كما أنه سيستهلك موارد 2x.VAD Threshold (%)
، ...systemctl restart --user pipewire.service
Noise Canceling source
كجهاز إدخاللمزيد من المعلومات، راجع وثائق PipeWire على سلاسل التصفية
استكشاف الأخطاء وإصلاحها:
حلول بديلة لتكوين PipeWire/PulseAudio والتي تستخدم أيضًا RNNoise:
TLDR: استخدم PipeWire... أو اتبع الإرشادات أدناه.
الفكرة هي:
sink_master
) ويحتوي على مخزن إدخال (معلمة sink_name
، سيتم إنشاء الحوض).source
) إلى مصدر إدخال البرنامج المساعد ( sink
) بقناة واحدة.على سبيل المثال، لإنشاء جهاز أحادي جديد بصوت منخفض الضوضاء من الميكروفون، ابحث أولاً عن اسم الميكروفون الخاص بك باستخدام على سبيل المثال:
pactl list sources short
ثم قم بإنشاء الجهاز الجديد باستخدام:
pacmd load-module module-null-sink sink_name=mic_denoised_out rate=48000
pacmd load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50,20,0,0,0
pacmd load-module module-loopback source= < your_mic_name > sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true
يجب تنفيذ هذا في كل مرة يتم فيها تشغيل PulseAudio. يمكنك أتمتة هذا عن طريق إنشاء ملف في ~/.config/pulse/default.pa
بالمحتوى:
.include /etc/pulse/default.pa
load-module module-null-sink sink_name=mic_denoised_out rate=48000
load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=/path/to/librnnoise_ladspa.so control=50,200,0,0,0
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true
set-default-source mic_denoised_out.monitor
ترتيب الإعدادات في control=50,200,0,0,0
هو: VAD Threshold (%)
، VAD Grace Period (ms)
، Retroactive VAD Grace Period (ms)
، Placeholder1
، Placeholder2
.
إذا كنت متأكدًا تمامًا من أنك تريد إدخال استريو، فاستخدم هذه الخيارات بدلاً من ذلك:
label=noise_suppressor_stereo
channels=2
إذا كانت لديك مشاكل مع طقطقة الصوت أو زمن الاستجابة المرتفع / المتزايد بشكل دوري، فقد تساعد إضافة latency_msec=1
إلى الاسترجاع:
load-module module-loopback source=your_mic_name sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true latency_msec=1
pacmd load-module module-remap-source source_name=denoised master=mic_denoised_out.monitor channels=1
ربما لا تزال بحاجة إلى تعيين الإدخال الصحيح للتطبيق، ويمكن القيام بذلك في لوحة مزج الصوت (إذا كان لديك واحدة) في علامة التبويب "التسجيل" حيث يجب عليك تعيين "مراقبة الإخراج الخالي" كمصدر.
مزيد من القراءة:
TODO، المساهمات موضع ترحيب!
يتم اختبار البرنامج المساعد مع:
أنا لست مرتبطًا بعمل RNNoise الأصلي وليس لدي أي فهم للشبكات العصبية المتكررة التي يعتمد عليها.
يتم بيع التبعيات الخارجية عبر git-subrepo. لذلك ليست هناك حاجة لاستخدام الوحدات الفرعية، كما أن تصحيح النصوص الفرعية أمر سهل (في الوقت الحالي لدينا العديد من التصحيحات لـ JUCE).
ورحب التحسينات! ولكن إذا كنت تريد المساهمة بأي شيء كبير - فافتح مشكلة أولاً.
التجميع لـ x64:
cmake -Bbuild-x64 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x64
التجميع لـ x32:
cmake -D CMAKE_CXX_FLAGS=-m32 -D CMAKE_C_FLAGS=-m32 -Bbuild-x32 -H. -GNinja -DCMAKE_BUILD_TYPE=Release
ninja -C build-x32
التجميع المتقاطع لنظام التشغيل Windows x64 (تفشل إصدارات MinGW في الوقت الحالي بسبب بعض حالات عدم التوافق في JUCE):
cmake -Bbuild-mingw64 -H. -GNinja -DCMAKE_TOOLCHAIN_FILE=toolchains/toolchain-mingw64.cmake -DCMAKE_BUILD_TYPE=Release
ninja -C build-mingw64
بشكل افتراضي، يتم إنشاء جميع المكونات الإضافية المدعومة للنظام الأساسي. يمكنك إيقاف تشغيل المكونات الإضافية عمدًا باستخدام علامات CMake التالية:
BUILD_LADSPA_PLUGIN
BUILD_VST_PLUGIN
BUILD_VST3_PLUGIN
BUILD_LV2_PLUGIN
BUILD_AU_PLUGIN
(نظام التشغيل MacOS فقط)BUILD_AUV3_PLUGIN
(نظام التشغيل MacOS فقط)على سبيل المثال:
cmake -DBUILD_VST_PLUGIN=OFF -DBUILD_LV2_PLUGIN=OFF
هذا المشروع مرخص بموجب رخصة جنو العامة الإصدار 3.0 - راجع ملف الترخيص للحصول على التفاصيل.
المكتبات المستخدمة: