Есть екига (версия 2). Хочу записать разговор с человеком чтобы потом внимательно прослушать. Как сделать? Потыкался в настройках - не нашёл, может быть другой софтофон может такое?
Но это при условии, что микрофон хорошо заработает через pulse. Если захват будет через ALSA напрямик к hg - то не получиться (точнее придеться прикручивать ещё один костыль к asounrc).
Вообщем, все зависит от того каким образом екига работает со звуком.
В ekiga - ALSA только, да к тому ж устройство прописать нельзя. Потому попробуйте вариант через pulse (плагин к ALSA) - может и заработает (скайп отказался).
Да, записывать нужно сразу с двух потоков одновременно (вход выход). Как это сделать - ХЗ.
Не поленился посмотреть Gizmo. Действительно записывает! Вот только хрен сразу додумаешься, что сохраненные разговоры лежат на столе.
Вообщем, соединил Gizmo и Ekiga - между собой хорошо разговаривают ;)
Вообщем, ставьте Gizmo! Если хотите, что бы он работал (нормально!) через pulse, то выставите в установках проги OSS и затем запускайте через "padsp gizmo". Если вы не знаете что такое pulse и зачем вам это нужно — будет работать и так. Этот вариант для вас будет самым приемлимым (как понял из разговора, вы не слишком разбираетесь во всех этих красноглазых делах).
[РЕШЕНИЕ]
Сделать все как по ссылке:
http://www.linux.org.ru/view-message.jsp?msgid=3257075#3259579
Скрипт для записи (record-sip):
#!/bin/sh
if test "$1" = "-h" || test "$1" = "--help"
then
echo "record Sound"
echo "run $0 [param sox encoding]"
exit
fi
date=`date +%Y%m%d-%H-%m-%S`
# parec - from monitor
parec --channels=1 --format=s16le --rate=22050 | \
sox -m -t sw -r 22050 -c 1 - \
-t alsa -r 22050 default \
call-$date.ogg
--
Понадобиться поставить sox и плагины к sox.
Ekiga хорошо работает в связке ALSA-pulse. Потому ставьте в
настройках поставьте ALSA,default.
Однако, записываться будут данные с микрофона, что по качеству
хуже чем пропущенный через обработчик ekiga. Но и работает!
Для тестирования можете поговорить с ботом из Gizmo:
sip:17473113898@proxy01.sipphone.com
Про Gizmo. Кнопка записи имеется, но что то коряво работает —
в записи лишь какой то жалкий кусочек и все.
И разговор с ботом не завязался - от меня идет лишь обрывистый
звук. Вообщем, не смог осилить. Пробовал и dsp и alsa - ЖО.
Со Skype сильно не разбирался. Вроде как pulse есть, но ввод
работает коряво. Видимо нормально грабить можно лишь через
сборку OSS (с padsp).
В пору писать мне статью в FAQ.
> Это точно. Просто исчерпывающе.
К сожалению, у меня нет звезды для вики лора (звезданутые распоясались
опять!).
Вот, написал ещё один скриптик. Просто запустите его в дире и
он сам все сделает - отловить события начала разговора, запишет,
нормализуте вход и выход (это важно, ради этого все и делалось),
конвертирует в различные форматы (лишнее внизу закоментируйте).
Необходимо:
* настроенный pulse, так же рекомендую поставить гуи утилиты
* ekiga, либо ещё чего сносно работающее через pusle (в том числе
и через костыли alsa->pulse, oss->pulse (padsp)).
* sox (обязательно!), кодек (speex, lame, ogg)
* минимальные знания bash (я сам в нем мало что понимаю)
* умение ставить недостающие пакеты
Speex больше всего понравился, якобы для звука создавался.
Но c ogg различия небольшие. С mp3 нужно ещё долго ковыряться
подбирая параметры.
Ещё можно добавить подавление шума (sox с профилем), но чудес
ждать не стоит.
Также понять, что же плохого в даном методе нормализации.
man soxeffect говорит: See the discussion on Clipping above for
reasons why it is rarely a good idea to actually do this.
А где эта дискуссия?
#!/bin/bash
# desc: deamon for auto recording talk
# run in some dir and this do all
# normalize, encoding work
# fixme: check pactl sox speexenc
# fixme: launch some copy this script?
param_pa="--channels=1 --format=s16le --rate=8000"
param_sox="-r 8000 -c 1"
search="-e ekiga -e gizmo -e skype"
d_monitor=`pactl list | grep monitor | grep -i Name: | awk '{print $2}'`
d_input=` pactl list | grep input | grep -i Name: | awk '{print $2}'`
# fixme: check device avolable
while ( true )
do
if ( pactl list | grep -i $search )
then
date=`date +%s`
file=`date +%Y%m%d-%H-%m-%S`
echo $file
# output
parec -r -d $d_monitor $param_pa | sox -t sw $param_sox - $file.out.wav stat -v 2>out.stat &
# input (mic)
pacat -r -d $d_input $param_pa | sox -t sw $param_sox - $file.mic.wav stat -v 2>mic.stat &
while ( pactl list | grep -i $search ) >/dev/null
do
echo -ne "\r"$((`date +%s` - $date)) sec
sleep 3;
done
jobs -rp | xargs kill
vol_out=`cat out.stat`;
vol_mic=`cat mic.stat`;
rm out.stat mic.stat
echo
echo "Balancing: $vol_out, $vol_mic"
title="talk in $file"
sox -m -v $vol_out $file.out.wav -v $vol_mic $file.mic.wav $file.wav
rm $file.out.wav $file.mic.wav
# SELECT encoding
speexenc --title "$title" $file.wav $file.spx
oggenc -Q $file.wav -o $file.ogg --title "$title"
# lame -S --tt "$title" --preset voice $file.wav $file.voice.mp3
lame -S --tt "$title" -b 16 $file.wav $file.mp3
rm $file.wav
echo Dane. Wait for NEXT
fi
sleep 3;
done