නිශ්චිත ශබ්ද මට්ටම් කරා ළඟා වුවහොත් යම් කාලයක් සඳහා (ද penalty ුවමක් ලෙස) යන්ත්‍රයක් “හිස් තිරයක්” කරන්නේ කෙසේද?


1556

මගේ දරුවන් (4 සහ 5) පරිගණකයේ ක්‍රීඩා කරන විට බොහෝ දේ කෑගසයි. මේ සඳහා cure ලදායී ප්‍රතිකාරයක් මට හමු විය. මට මහා ශබ්ද ඇසෙන විට, මම ක්‍රීඩා පරිගණකයට කඩා වැදී:

chvt 3;  sleep 15;  chvt 7 

මෙය ලිනක්ස් මත තත්පර 15 ක් තිරය ක්‍රියා විරහිත කරයි. පරිගණකය ශබ්ද නගා කැමති නැති බව මම ඔවුන්ට පැවසුවා. ඔවුන් මෙය මුළුමනින්ම විශ්වාස කරන අතර සමාව ඉල්ලා පරිගණකයෙන් අයදිනවා. ඔවුන් බොහෝ නිශ්ශබ්ද වූ නමුත් මා සතුටට පත්වන මට්ටමට නොව, එබැවින් මෙම අධ්‍යාපන ක්‍රියාවලිය දිගටම කරගෙන යා යුතුය. කෙසේ වෙතත්, මම මෙය අතින් කිරීමට සෑම විටම නොසිටිමි.

මෙය ස්වයංක්‍රීය කිරීමට හැකිද? කොටුවට මයික්‍රෆෝනයක් සවි කර ඇත. ශබ්දයේ මට්ටම යම් සීමාවක් පසු කළහොත් මට විධානයක් ක්‍රියාත්මක කිරීමට අවශ්‍යය.


5
ඔවුන් CTRL + ALT + F7
එබීමට

2
@ සූයිඩොගා හේ; ඔවුන් දන්නේ නැහැ මොකද වෙන්නේ කියලා!
wizzwizz4

1
තාක්ෂණික විසඳුමක් සඳහා සුබ පැතුම්. නමුත් මම හිතන්නේ, සෑම විටම දරුවන්ට සත්‍යය පැවසීම වැදගත් ය.
පීටර් - මොනිකා නැවත ස්ථාපනය කරන්න

Answers:


648

කෙටි ශ්‍රව්‍ය නියැදියක් විශ්ලේෂණය කිරීමට SoXsox වෙතින් භාවිතා කරන්න :

sox -t .wav "|arecord -d 2" -n stat

සමග -t .wavඅප ඩබ්ලිව්ඒවී වර්ගය සැකසීමට නියම, "|arecord -d 2"එම මරන arecord , තත්පර දෙකක් වැඩසටහන -nවිධානය ක්රියාත්මක ශූන්ය ගොනුව හා සමග statඅපි සංඛ්යා ලේඛන අවශ්ය නියම කරන්න.

පසුබිම් කථාවක් සහිත මගේ පද්ධතියේ මෙම විධානයේ ප්‍රතිදානය:

Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
Samples read:             16000
Length (seconds):      2.000000
Scaled by:         2147483647.0
Maximum amplitude:     0.312500
Minimum amplitude:    -0.421875
Midline amplitude:    -0.054688
Mean    norm:          0.046831
Mean    amplitude:    -0.000044
RMS     amplitude:     0.068383
Maximum delta:         0.414063
Minimum delta:         0.000000
Mean    delta:         0.021912
RMS     delta:         0.036752
Rough   frequency:          684
Volume adjustment:        2.370

එවිට උපරිම විස්තාරය උපුටා ගත හැක්කේ:

grep -e "RMS.*amplitude" | tr -d ' ' | cut -d ':' -f 2

අපි grepඅපට අවශ්ය රේඛාව සඳහා, භාවිතා trඉවතට අවකාශය චරිත පසුව සිඳීම හා cutඑය විසින් :ස්වභාවය හා අපට ලබා දෙන දෙවන සහභාගි 0.068383මෙම උදාහරණය තුල. අදහස් දැක්වීම් වලට අනුව, ආර්එම්එස් යනු උපරිම විස්තාරයට වඩා ශක්තිය මැනීමකි.

bcවිධාන රේඛාවෙන් පාවෙන ලක්ෂ්‍ය අගයන් සංසන්දනය කිරීමට ඔබට අවසානයේ ප්‍රති result ලය භාවිතා කළ හැකිය :

if (( $(echo "$value > $threshold" | bc -l) )) ; # ... 

ඔබ මිනිත්තු 1 ක් නින්දට කැඳවන , පරිමාව පරික්ෂා කර, නැවත නැවත කරන ලූපයක් ( බාෂ් උදාහරණ බලන්න ) ගොඩනඟන්නේ නම් , ඔබට එය පසුබිමේ ධාවනය කළ හැකිය. අවසාන පියවර වන්නේ එය ආරම්භක ස්ක්‍රිප්ට් හෝ සේවා ලිපිගොනු වලට එකතු කිරීමයි (ඔබේ මෙහෙයුම් පද්ධතිය / ඩිස්ට්‍රෝ මත පදනම්ව), ඔබට එය අතින් දියත් කිරීමට පවා අවශ්‍ය නොවේ.


284
උපරිම විස්තාරය ගැනීම මම ප්‍රතික්ෂේප කරමි. යමෙකු අත්පොළසන් දුන් නිසා හෝ ඒ හා සමාන දෙයක් නිසා ඔවුන්ගේ තිරය හිස් වූ විට ළමයින්ට එය එතරම් හොඳ නැත. සාමාන්‍යය වඩාත් යෝග්‍ය බව පෙනේ.
orlp

36
පැහැදිලි කිරීමක් නම්, “සාමාන්‍ය” අනුව ඔබ අදහස් කරන්නේ ආර්එම්එස් විස්තාරය හරිද? තත්පර 2 ක් පුරා ශබ්දය ස්ථාවර ශබ්දයක් ඇත්නම් මධ්‍යන්‍ය විස්තාරය 0 ට ආසන්න වනු ඇත (ධනාත්මක හා negative ණාත්මක කොටස් එකිනෙක අවලංගු වේ).
ලූක්

7
සාම්පල මාලාවක් සඳහා සරල “ශක්ති” අනාවරකයක් නම්, සියලු කඳු මුදුන්වල අගය එකට එකතු කිරීමයි. ඔබට අවශ්‍ය නැතිනම් එය සාමාන්‍යකරණය කිරීමට පවා ඔබට අවශ්‍ය නොවනු ඇත. sample[n]>sample[n-1]&&sample[n]>sample[n+1]ගීතයක ශක්තිය මැනීම සඳහා මූලික යාන්ත්‍රණයක් ලෙස මම මෙය භාවිතා කළ ඕනෑම ස්ථානයක් උච්චතම අවස්ථාවකි . පරිමාව මට්ටම ගැන ඔබ සතුටු වන මැජික් අංකයක් සොයන්න.
කස්ලායි

3
ඔබේ පළමු විධානයෙහි නියැදි ප්‍රති output ලයක් කුඩා දරුවෙකු කෑගසන විට, යොමු කිරීම සඳහා මම කැමතියි.
ඇල්වින් වොන්

3
විස්තර කර ඇති භාවිතය සඳහා (සෑම මිනිත්තු කිහිපයකට වරක් ස්වයංක්‍රීයව ආරම්භ කරන්න + ධාවනය කරන්න) ක්‍රෝන් රැකියාව යනු භාවිතා කිරීමට සුදුසුම මෙවලමයි. Init script + bash loop + sleep භාවිතා කිරීමට වඩා සැකසීමට වඩා සරල හා ශක්තිමත්.
m000

133

පිරිසිදු දත්ත සමඟ එය කළ හැකි ආකාරය මෙන්න :

පිරිසිදු දත්ත භාවිතා කරමින් ළමා කෑගැසීම වැළැක්වීම

මෙට්‍රෝ යනු මෙට්‍රොනොම් එකක් වන අතර, “මෙට්‍රෝ 100” සෑම එම්එස් 100 ටම තට්ටු කරයි.

ශ්රව්ය උපකරණ පැමිණෙන්නේ adc from වෙතින් වන අතර පරිමාව ගණනය කරනු ලබන්නේ env by විසිනි. "pd dsp 0" පහර දෙන විට DSP ක්‍රියා විරහිත කරයි, "pd dsp 1" එය සක්‍රිය කරයි. "shell" විසින් සම්මත කරන ලද විධානය ෂෙල් එකකින් ක්‍රියාත්මක කරයි, මම දීප්තිය X ට සැකසීමට ලිනක්ස් xrandr API භාවිතා කරමි, ඔබ මෙය වේලන්ඩ් සඳහා අනුවර්තනය කළ යුතුය.

ඔබට පෙනෙන පරිදි, සහන කාලය සහ අගුලු දැමීම ශ්‍රව්‍ය කේතයට වඩා වැඩි ඉඩක් ගනී.

මුදු බෆර සහ / හෝ චලනය වන සාමාන්‍ය සමඟ විසඳුමක් සෑදීම එය කිරීමට වඩා පහසු විය යුතුය sox. එබැවින් මේ සඳහා පිරිසිදු දත්ත භාවිතා කිරීම නරක අදහසක් යැයි මම නොසිතමි. නමුත් තිරය හිස්ව තිබීම සහ අගුලු දැමීම දත්ත ප්‍රවාහ ආදර්ශයට නොගැලපේ.

PD ගොනුව gist.github.com හි ඇත: ysangkok - kidsyell.pd .


12
ඉතා කදිමයි! මෙම තාක්‍ෂණය භාවිතයෙන් ඔබට මෙය තරමක් ප්‍රතිචාර දැක්විය හැකිය: සාමාන්‍ය ශබ්ද මට්ටම විනාඩියකට වඩා නිරීක්ෂණය කරන්න, ඉන්පසු එය මූලික රේඛාව ලෙස භාවිතා කරන්න, එවිට ළමයින් බේස්ලයින් 20 dB ට වඩා ඉහළින් ගිය විට එය අවුලුවයි. එවිට එය ස්වයංක්‍රීයව සංසරණ ශබ්ද මට්ටමට ගැලපේ.
හාන්ස්-ක්‍රිස්ටෝෆ් ස්ටයිනර්

1
ඔව්, එය අර්ථවත් කරයි @ හාන්ස්-ක්‍රිස්ටෝෆ්ස්ටයිනර්. නමුත් එක්තරා විදියකට, අවට ශබ්දයේ ශබ්දය ඇත්ත වශයෙන්ම ළමයින්ට ශබ්ද නඟා කෑගැසීමට අවශ්‍ය නොවන්නේ, මන්ද ඔවුන් සමස්ත ශබ්දයෙන් කුඩා ප්‍රමාණයක් සෑදෙන බැවිනි. ඇත්ත වශයෙන්ම එය අදාළ වන්නේ පවතින ශබ්දය සුදු හෝ රෝස හෝ වෙනත් ආකාරයකින් නොසලකා හරිනු ලැබුවහොත් පමණි.
ජැනස් ට්‍රොල්සන්

4
සති අන්තයේ උදෑසන මෙන් එය සාමාන්‍යයට වඩා නිහ er නම්, එය වඩාත් සංවේදී වනු ඇත, මන්ද එය සෑම විටම පරිසර මට්ටමට වඩා 20 dB පමණ වනු ඇත
හාන්ස්-ක්‍රිස්ටෝෆ් ස්ටයිනර්

මෙය දීර් PD කරන ලද පී.ඩී.
nullpotent

@iccthedral: මම එය සෑදීමට pd-extended භාවිතා කළෙමි, නමුත් මම pd- විස්තාරිත විශේෂිත ඉදිකිරීම් භාවිතා කර ඇත්දැයි මම නොදනිමි.
ජැනස් ට්‍රොල්සන්

104

තෝමර් එම්. ගිල් විසින් "ශබ්දය / ශ්රව්ය උපකරණ හඳුනා ගන්නේ කෙසේද" යන්න පරීක්ෂා කරන්න .

මූලික වශයෙන් එය සෑම තත්පර 5 කට වරක් ශබ්දය පටිගත කරයි, ශබ්ද විස්තාරය පරීක්ෂා කිරීම, භාවිතා කිරීම soxසහ ස්ක්‍රිප්ට් එකක් අවුලුවන්නේද නැද්ද යන්න තීරණය කරයි. rubyඔබේ දරුවන්ට පිටපත පහසුවෙන් අනුවර්තනය කළ හැකි යැයි මම සිතමි ! නැතහොත් ඔහු විසින් සපයා ඇති පයිතන් ස්ක්‍රිප්ට් එක (පයි ඕඩියෝ භාවිතා කරමින්) හැක් කිරීමට ඔබට තෝරා ගත හැකිය.


6
තත්පර 5 කට වඩා අඩු කාලයක් තුළදී අනාවරණය වීම වළක්වා ගත හැකි පිපිරීම් ගැන කුමක් කිව හැකිද?
RhysW

54

මෙවැනි දෙයක් කිරීමෙන් ඔබට මයික්‍රෝෆෝනයෙන් තොරතුරු ලබා ගත හැකිය:

arecord -d1 /dev/null -vvv

ඔබට සැකසීම් සමඟ ටිකක් සෙල්ලම් කිරීමට සිදුවනු ඇත, වැනි:

arecord -d1 -Dhw:0 -c2 -fS16_LE /dev/null -vvv

එතැන් සිට, එය ප්‍රතිදානය විග්‍රහ කිරීම සරල කාරණයකි.


46

මෙය මා දුටු වඩාත් විනෝදජනක ප්‍රශ්න වලින් එකකි. එවැනි කදිම පිළිතුරක් සඳහා ටුකුසිට ස්තූති කිරීමට මම කැමතියි ; මම බාෂ් පිටපතක් ලෙස සකසා ඇති බව

#!/bin/bash

threshold=0.001
# we should check that sox and arecord are installed
if [ $1 ]; then threshold=$1; fi
while [ 1 -gt 0 ]; do
 if(( $(echo "$(sox -t .wav '|arecord -d 2' -n stat 2>&1|grep -e 'RMS.*amplitude'|tr -d ' '|cut -d ':' -f 2 ) > $threshold"|bc -l) ))
 then
  chvt 3; sleep 5; chvt 7;
 fi
done

8
/Etc/rc4.d/S99rc.local වෙත පේළියක් එක් කිරීමෙන් ඔබ මෙම ධාවනය ආරම්භ කර ආදාන මයික් එක විස්තාරණය නොකළ 100% දක්වා වෙනස් කළහොත් ඔබටද tty3 වෙතට ඇද දැමිය හැකිය (නින්දට පෙර ඔබට ආපසු පනින්න පුළුවන් Ctrl + Alt + F7 සමඟ අවසන් කරන්න), ඔබේ යතුරුපුවරුව ටර්මිනලයක් විවෘත කිරීමට තරම් loud ෝෂාකාරී නම්, sudo killall too_loud ධාවනය කිරීමට Ctrl + Alt + F1 සහ එහි ලොග් වන්න.)
ඇලෙක්ස් රොචේ

42

සී හෝ සී ++ විසඳුම සඳහා මගේ ශත 2: සමහර විට වඩාත්ම approach ලදායී ප්‍රවේශය නොව, ලිනක්ස් වලදී, ඔබට ඇල්සා ඒපීඅයි (ලිනක්ස් හි ශ්‍රව්‍ය හැසිරවීමේ පුස්තකාලය) භාවිතා කළ හැකි අතර සංඛ්‍යාත්මක තාක්‍ෂණයක් භාවිතා කළ හැකිය (නිදසුනක් ලෙස, සාමාන්‍ය ශබ්දය ගණනය කිරීම සෑම තත්පරයක්ම සමතලා කරන්න) ශබ්ද මට්ටම ලබා ගැනීමට.

එවිට ඔබට එය අසීමිත පුඩුවක් තුළ පරීක්ෂා කළ හැකි අතර, එය පෙර සැකසූ එළිපත්තකට වඩා වැඩි නම්, ඔබට තත්පර 11 ක් තිරය ක්‍රියා විරහිත කිරීමට X11 පුස්තකාලය භාවිතා කළ හැකිය , නැතහොත් විකල්පයක් ලෙස (අඩු අලංකාර, නමුත් එය ක්‍රියා කරයි) chvtවිධානය භාවිතා කරමින් විධානය ක්‍රියාත්මක කරන්න system("chvt 3; sleep 15; chvt 7 ");.


2
විධානය භාවිතා කරන්නේ නම් මම වෙනස් දෙයක් සලකා බලමි chvt. ArchWiki ට හොඳ උදාහරණ ඇත.
ක්‍රි.ව.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.