Reduce background noise and optimize the speech from an audio clip using ffmpeg
I extract audio clips from a video file for speech recognition. These videos come from mobile/other handmade devices and hence contain a lot of noise. I want to reduce the background noise of the audio so that the speech that I relay to my speech recognition engine is clear. I am using ffmpeg to do all of this stuff, but am stuck at the noise reduction phase.
Till now I have tried following filters:
ffmpeg-20140324-git-63dbba6-win64-staticbin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav
ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav
ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav
But the results are very disappointing. My reasoning was that since speech comes under 300-3000 hz range I can filter out all other frequencies to suppress any background noise. What am I missing?
Also, I read about weiner filters that could be used for speech enhancements and found this but am not sure how to use it.
audio ffmpeg noise voice speech-recognition
add a comment |
I extract audio clips from a video file for speech recognition. These videos come from mobile/other handmade devices and hence contain a lot of noise. I want to reduce the background noise of the audio so that the speech that I relay to my speech recognition engine is clear. I am using ffmpeg to do all of this stuff, but am stuck at the noise reduction phase.
Till now I have tried following filters:
ffmpeg-20140324-git-63dbba6-win64-staticbin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav
ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav
ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav
But the results are very disappointing. My reasoning was that since speech comes under 300-3000 hz range I can filter out all other frequencies to suppress any background noise. What am I missing?
Also, I read about weiner filters that could be used for speech enhancements and found this but am not sure how to use it.
audio ffmpeg noise voice speech-recognition
add a comment |
I extract audio clips from a video file for speech recognition. These videos come from mobile/other handmade devices and hence contain a lot of noise. I want to reduce the background noise of the audio so that the speech that I relay to my speech recognition engine is clear. I am using ffmpeg to do all of this stuff, but am stuck at the noise reduction phase.
Till now I have tried following filters:
ffmpeg-20140324-git-63dbba6-win64-staticbin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav
ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav
ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav
But the results are very disappointing. My reasoning was that since speech comes under 300-3000 hz range I can filter out all other frequencies to suppress any background noise. What am I missing?
Also, I read about weiner filters that could be used for speech enhancements and found this but am not sure how to use it.
audio ffmpeg noise voice speech-recognition
I extract audio clips from a video file for speech recognition. These videos come from mobile/other handmade devices and hence contain a lot of noise. I want to reduce the background noise of the audio so that the speech that I relay to my speech recognition engine is clear. I am using ffmpeg to do all of this stuff, but am stuck at the noise reduction phase.
Till now I have tried following filters:
ffmpeg-20140324-git-63dbba6-win64-staticbin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav
ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav
ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav
But the results are very disappointing. My reasoning was that since speech comes under 300-3000 hz range I can filter out all other frequencies to suppress any background noise. What am I missing?
Also, I read about weiner filters that could be used for speech enhancements and found this but am not sure how to use it.
audio ffmpeg noise voice speech-recognition
audio ffmpeg noise voice speech-recognition
edited Apr 24 '18 at 23:43
Twisty Impersonator
18.4k146699
18.4k146699
asked Mar 24 '14 at 21:43
SudhSudh
213125
213125
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
If you are looking to isolate audible speech try combining a lowpass filter with a high pass filter. For usable audio I have noticed that filtering out 200hz and below then filter out 3000hz and above does a pretty good job of keeping usable voice audio.
ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>
In this example add the high pass filter first to cut the lower frequencies then use the low pass filter to cut the higher frequencies. If needed you could run your file through this more than once to clean up higher db frequencies within the cut frequency ranges.
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
2
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
2
You may preview your filter withffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
|
show 1 more comment
ffmpeg doesn't have any decent audio filters for noise-reduction built in. Audacity has a fairly effective NR filter, but it's designed to be used with 2-pass operation with a sample of just the noise, and then the input.
The comments at the top of https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp explain how it works. (basically: suppress every FFT bin that's below the threshold. So it only lets signals through when they're louder than the noise floor in that frequency band. It can do amazing things without causing problem. It's like a band-pass filter that adapts to the signal. Since the energy of the noise is spread over the whole spectrum, only letting through a few narrow bands of it will reduce the total noise energy a LOT.
See also Audio noise reduction: how does audacity compare to other options? for more details of how it works, and that thresholding FFT bins in one way or another is the basis of typical commercial noise-reduction filters, too.
Porting that filter to ffmpeg would be a bit awkward. Maybe implementing it as a filter with 2 inputs, instead of a 2-pass filter, would work best. Since it only needs a few seconds to get a noise profile, it's not like it has to read through the whole file. And you SHOULDN'T feed it the whole audio stream as a noise sample, anyway. It needs to see a sample of JUST noise to set thresholds for each FFT bin.
So yeah, a 2nd input, rather than 2pass, would make sense. But that makes it a lot less easy to use than most ffmpeg filters. You'd need a bunch of voodoo with stream split / time-range extract. And of course you need manual intervention, unless you have a noise sample in a separate file that will be appropriate for multiple input files. (one noise sample from the same mic / setup should be fine for all clips from that setup.)
add a comment |
FFmpeg now have 2 native filters to deal with noise background: afftdn and anlmdn.
Also since some time one can use ladspa(look for noise-supressor) and/or lv2 (look for speech denoiser) filters with FFmpeg.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f733061%2freduce-background-noise-and-optimize-the-speech-from-an-audio-clip-using-ffmpeg%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you are looking to isolate audible speech try combining a lowpass filter with a high pass filter. For usable audio I have noticed that filtering out 200hz and below then filter out 3000hz and above does a pretty good job of keeping usable voice audio.
ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>
In this example add the high pass filter first to cut the lower frequencies then use the low pass filter to cut the higher frequencies. If needed you could run your file through this more than once to clean up higher db frequencies within the cut frequency ranges.
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
2
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
2
You may preview your filter withffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
|
show 1 more comment
If you are looking to isolate audible speech try combining a lowpass filter with a high pass filter. For usable audio I have noticed that filtering out 200hz and below then filter out 3000hz and above does a pretty good job of keeping usable voice audio.
ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>
In this example add the high pass filter first to cut the lower frequencies then use the low pass filter to cut the higher frequencies. If needed you could run your file through this more than once to clean up higher db frequencies within the cut frequency ranges.
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
2
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
2
You may preview your filter withffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
|
show 1 more comment
If you are looking to isolate audible speech try combining a lowpass filter with a high pass filter. For usable audio I have noticed that filtering out 200hz and below then filter out 3000hz and above does a pretty good job of keeping usable voice audio.
ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>
In this example add the high pass filter first to cut the lower frequencies then use the low pass filter to cut the higher frequencies. If needed you could run your file through this more than once to clean up higher db frequencies within the cut frequency ranges.
If you are looking to isolate audible speech try combining a lowpass filter with a high pass filter. For usable audio I have noticed that filtering out 200hz and below then filter out 3000hz and above does a pretty good job of keeping usable voice audio.
ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>
In this example add the high pass filter first to cut the lower frequencies then use the low pass filter to cut the higher frequencies. If needed you could run your file through this more than once to clean up higher db frequencies within the cut frequency ranges.
answered Nov 4 '14 at 2:34
av8rav8r
36133
36133
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
2
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
2
You may preview your filter withffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
|
show 1 more comment
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
2
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
2
You may preview your filter withffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
Sorry, but this seems to do no noticeable noise reduction for me.
– Angad
Oct 14 '15 at 8:03
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
This works very well to reduce low level of background noise (fans, buzzing, etc) but may compromise the audio quality slightly, though that can be mitigated somewhat by applying other filters afterwards.
– Iain Collins
Nov 16 '16 at 5:01
2
2
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.
-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
For my case the original audio was so bad it was almost impossible to hear the voice because of some water fall noice in the background. I used the following. It is not great quality, but 1000x better than the original.
-af "highpass=f=200, lowpass=f=1000"
– Eric
Mar 9 '17 at 22:51
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
I get some error with the above or rather, warning from ffmpeg: [Parsed_highpass_0 @ 0x1524780] clipping 52 times. Please reduce gain.
– shevy
Jan 26 '18 at 14:10
2
2
You may preview your filter with
ffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
You may preview your filter with
ffplay <input file> -af lowpass=3000,highpass=200
– Björn
Mar 30 '18 at 20:52
|
show 1 more comment
ffmpeg doesn't have any decent audio filters for noise-reduction built in. Audacity has a fairly effective NR filter, but it's designed to be used with 2-pass operation with a sample of just the noise, and then the input.
The comments at the top of https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp explain how it works. (basically: suppress every FFT bin that's below the threshold. So it only lets signals through when they're louder than the noise floor in that frequency band. It can do amazing things without causing problem. It's like a band-pass filter that adapts to the signal. Since the energy of the noise is spread over the whole spectrum, only letting through a few narrow bands of it will reduce the total noise energy a LOT.
See also Audio noise reduction: how does audacity compare to other options? for more details of how it works, and that thresholding FFT bins in one way or another is the basis of typical commercial noise-reduction filters, too.
Porting that filter to ffmpeg would be a bit awkward. Maybe implementing it as a filter with 2 inputs, instead of a 2-pass filter, would work best. Since it only needs a few seconds to get a noise profile, it's not like it has to read through the whole file. And you SHOULDN'T feed it the whole audio stream as a noise sample, anyway. It needs to see a sample of JUST noise to set thresholds for each FFT bin.
So yeah, a 2nd input, rather than 2pass, would make sense. But that makes it a lot less easy to use than most ffmpeg filters. You'd need a bunch of voodoo with stream split / time-range extract. And of course you need manual intervention, unless you have a noise sample in a separate file that will be appropriate for multiple input files. (one noise sample from the same mic / setup should be fine for all clips from that setup.)
add a comment |
ffmpeg doesn't have any decent audio filters for noise-reduction built in. Audacity has a fairly effective NR filter, but it's designed to be used with 2-pass operation with a sample of just the noise, and then the input.
The comments at the top of https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp explain how it works. (basically: suppress every FFT bin that's below the threshold. So it only lets signals through when they're louder than the noise floor in that frequency band. It can do amazing things without causing problem. It's like a band-pass filter that adapts to the signal. Since the energy of the noise is spread over the whole spectrum, only letting through a few narrow bands of it will reduce the total noise energy a LOT.
See also Audio noise reduction: how does audacity compare to other options? for more details of how it works, and that thresholding FFT bins in one way or another is the basis of typical commercial noise-reduction filters, too.
Porting that filter to ffmpeg would be a bit awkward. Maybe implementing it as a filter with 2 inputs, instead of a 2-pass filter, would work best. Since it only needs a few seconds to get a noise profile, it's not like it has to read through the whole file. And you SHOULDN'T feed it the whole audio stream as a noise sample, anyway. It needs to see a sample of JUST noise to set thresholds for each FFT bin.
So yeah, a 2nd input, rather than 2pass, would make sense. But that makes it a lot less easy to use than most ffmpeg filters. You'd need a bunch of voodoo with stream split / time-range extract. And of course you need manual intervention, unless you have a noise sample in a separate file that will be appropriate for multiple input files. (one noise sample from the same mic / setup should be fine for all clips from that setup.)
add a comment |
ffmpeg doesn't have any decent audio filters for noise-reduction built in. Audacity has a fairly effective NR filter, but it's designed to be used with 2-pass operation with a sample of just the noise, and then the input.
The comments at the top of https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp explain how it works. (basically: suppress every FFT bin that's below the threshold. So it only lets signals through when they're louder than the noise floor in that frequency band. It can do amazing things without causing problem. It's like a band-pass filter that adapts to the signal. Since the energy of the noise is spread over the whole spectrum, only letting through a few narrow bands of it will reduce the total noise energy a LOT.
See also Audio noise reduction: how does audacity compare to other options? for more details of how it works, and that thresholding FFT bins in one way or another is the basis of typical commercial noise-reduction filters, too.
Porting that filter to ffmpeg would be a bit awkward. Maybe implementing it as a filter with 2 inputs, instead of a 2-pass filter, would work best. Since it only needs a few seconds to get a noise profile, it's not like it has to read through the whole file. And you SHOULDN'T feed it the whole audio stream as a noise sample, anyway. It needs to see a sample of JUST noise to set thresholds for each FFT bin.
So yeah, a 2nd input, rather than 2pass, would make sense. But that makes it a lot less easy to use than most ffmpeg filters. You'd need a bunch of voodoo with stream split / time-range extract. And of course you need manual intervention, unless you have a noise sample in a separate file that will be appropriate for multiple input files. (one noise sample from the same mic / setup should be fine for all clips from that setup.)
ffmpeg doesn't have any decent audio filters for noise-reduction built in. Audacity has a fairly effective NR filter, but it's designed to be used with 2-pass operation with a sample of just the noise, and then the input.
The comments at the top of https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp explain how it works. (basically: suppress every FFT bin that's below the threshold. So it only lets signals through when they're louder than the noise floor in that frequency band. It can do amazing things without causing problem. It's like a band-pass filter that adapts to the signal. Since the energy of the noise is spread over the whole spectrum, only letting through a few narrow bands of it will reduce the total noise energy a LOT.
See also Audio noise reduction: how does audacity compare to other options? for more details of how it works, and that thresholding FFT bins in one way or another is the basis of typical commercial noise-reduction filters, too.
Porting that filter to ffmpeg would be a bit awkward. Maybe implementing it as a filter with 2 inputs, instead of a 2-pass filter, would work best. Since it only needs a few seconds to get a noise profile, it's not like it has to read through the whole file. And you SHOULDN'T feed it the whole audio stream as a noise sample, anyway. It needs to see a sample of JUST noise to set thresholds for each FFT bin.
So yeah, a 2nd input, rather than 2pass, would make sense. But that makes it a lot less easy to use than most ffmpeg filters. You'd need a bunch of voodoo with stream split / time-range extract. And of course you need manual intervention, unless you have a noise sample in a separate file that will be appropriate for multiple input files. (one noise sample from the same mic / setup should be fine for all clips from that setup.)
edited Oct 28 '18 at 14:02
answered Feb 21 '15 at 10:50
Peter CordesPeter Cordes
2,3461621
2,3461621
add a comment |
add a comment |
FFmpeg now have 2 native filters to deal with noise background: afftdn and anlmdn.
Also since some time one can use ladspa(look for noise-supressor) and/or lv2 (look for speech denoiser) filters with FFmpeg.
add a comment |
FFmpeg now have 2 native filters to deal with noise background: afftdn and anlmdn.
Also since some time one can use ladspa(look for noise-supressor) and/or lv2 (look for speech denoiser) filters with FFmpeg.
add a comment |
FFmpeg now have 2 native filters to deal with noise background: afftdn and anlmdn.
Also since some time one can use ladspa(look for noise-supressor) and/or lv2 (look for speech denoiser) filters with FFmpeg.
FFmpeg now have 2 native filters to deal with noise background: afftdn and anlmdn.
Also since some time one can use ladspa(look for noise-supressor) and/or lv2 (look for speech denoiser) filters with FFmpeg.
answered Jan 12 at 15:53
Paul B. MaholPaul B. Mahol
32526
32526
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f733061%2freduce-background-noise-and-optimize-the-speech-from-an-audio-clip-using-ffmpeg%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown