Носки конца, записывающие однажды тишину, обнаруживаются

Вместо того, чтобы кодировать это самостоятельно, рассмотрите использование Бродяги, которая создается, чтобы инстанцировать и управлять virtualbox экземплярами. Документация превосходна, и я предлагаю, чтобы Вы проверили ее вместо того, чтобы пытаться к самокрутке.

Длинное и за исключением него - то, что Вы создаете простой файл управления и затем работаете vagrant up запустить столько экземпляров VirtualBox, сколько Вы хотите. Можно использовать vagrant ssh входить в хосты и vagrant halt завершать работу хоста (не завершаясь). vagrant destroy избавится от экземпляров.

Это поддерживает настройку с марионеткой, Ansible или Chef и позволяет Вам управлять большинством выставленных параметров конфигурации VBox.

16
07.11.2012, 01:14
4 ответа

Удалите знак минус из своей исходной команды:

rec /tmp/recording.flac rate 32k silence 1 0.1 3% 1 3.0 3%

Когда "ниже количества" будет отрицательно, команда тишины обрежет, все заставляет замолчать с середины файла. Когда это положительно, это обрезает тишину от конца файла.

13
27.01.2020, 19:48
  • 1
    , Который является большим простым решением, чем то, которое я придумал, LOL! –  Isaac 12.12.2012, 20:57

Я нашел, что своего рода шаткий путь такой решает эту проблему.

Я заметил, что, когда тишина обнаруживается, носки естественно не добавят ничего больше в файл, пока это не услышит более звуковой. Таким образом, я решил, что мог попытаться использовать в своих интересах этот факт.

В первую очередь, я запускаю устройство звукозаписи носков в фоновом режиме:

rec /tmp/recording.flac rate 32k silence 1 0.1 3% -1 3.0 3% &

Затем я получаю PID процесса записи с: p=$!

Затем я даю процессу записи секунду, чтобы закончить запустить и затем ожидать, пока файл не начинает расти.

sleep 1
until [ "$var1" != "$var2" ]; do
    var1=`du "/tmp/recording.flac"`
    sleep 1
    var2=`du "/tmp/recording.flac"`
done

После этого разрывы замкнутой цепи, который означает, что звук был обнаружен. Таким образом, теперь я создаю другой цикл для ожидания, пока данные не прекратят добавляться в файл (Это произойдет, после того как носки обнаруживают тишину снова).

echo "Sound Detected"
until [ "$var1" == "$var2" ]; do
    var1=`du "/tmp/recording.flac"`
    sleep 0.5
    var2=`du "/tmp/recording.flac"`
done

Теперь я просто должен выйти rec:

echo "Silence Detected"
kill $p

И вот именно. Вот завершенный сценарий:

rec /tmp/recording.flac rate 32k silence 1 0.1 3% -1 3.0 3% &
p=$!
sleep 1
until [ "$var1" != "$var2" ]; do
    var1=`du "/tmp/recording.flac"`
    sleep 1
    var2=`du "/tmp/recording.flac"`
done
echo "Sound Detected"
until [ "$var1" == "$var2" ]; do
    var1=`du "/tmp/recording.flac"`
    sleep 0.5
    var2=`du "/tmp/recording.flac"`
done
echo "Silence Detected"
kill $p

Теперь я предпочел бы лучший, более стабильный способ сделать это, но это должно будет работать на данный момент.

2
27.01.2020, 19:48

Это слушает навсегда, записи только последние звуки, пока это не слышит, одна секунда тишины, затем пишет файл, добавляет метку времени к нему, и перезапуски:

#!/bin/bash
/usr/bin/sox -t alsa default /home/default/working/recording.wav silence 1 0.1 5% 1 1.0 5%
DATE=$(date +%Y%m%d%H%M%S)
mv /home/default/working/recording.wav /home/default/waiting/$DATE.recording.wav
/home/default/startrecord.sh
1
27.01.2020, 19:48

Я немного изменил приведенные выше идеи. Он записывает вечно, записывает весь шум, пока (примерно) не встретится секунда тишины. Затем:

  • Обеспечивает создание двух подкаталогов.
  • Рассчитывает два спектрографа записи - один до нормализации и один после, и записывает в папки с метками даты.
  • Записывает нормализованное значение в файл в папку с отметкой даты.
  • Воспроизведение нормализованного файла с двумя файлами chirp .ogg (через голосовое управление CB Radio)

(Для очень удобного маленького повторителя эха UHF / 2 метра)

#!/bin/bash
while true; do
  rec buffer.ogg silence 1 0.1 5% 1 1.0 5%
  DATE=`date +%Y%m%d%H%M%S`
  DPATH=`date +%Y/%m/%d/`
  mkdir -p ./spectro/$DPATH
  mkdir -p ./voice/$DPATH
  echo Renaming buffer file to $DATE
  sox buffer.ogg -n spectrogram -x 300 -y 200 -z 100 -t $DATE.ogg -o ./spectro/$DPATH/$DATE.png
  sox buffer.ogg normbuffer.ogg gain -n -2
  sox normbuffer.ogg -n spectrogram -x 300 -y 200 -z 100 -t $DATE.norm.ogg -o ./spectro/$DPATH/$DATE.norm.png
  mv normbuffer.ogg ./voice/$DPATH/$DATE.ogg
  play pre.ogg ./voice/$DPATH/$DATE.ogg post.ogg 
done
3
27.01.2020, 19:48

Теги

Похожие вопросы