포터블기기 강좌


다음은 어학공부시 대화를 녹음해놓고 들어볼 때 유용한 유틸입니다.
녹음자체는 여러유틸이 있으니 사용하시고요

(저는 audacity를 이용하네요.)


네이버 매일어학 교재들 보면 아주 짧은 30초도 안되는 대화들로 이루어져 있는데요

이들을 날자순으로 저장해놓고 정해진 기간이상을 충분히 복습하는 것이 무엇보다 중요할겁니다.

특히 중국어같이 발음이 어려운 경우는 느리게 들어보는 것이 유용할텐데요-사실 중국어 때문에 만든 스크립트입니다.
체계적으로 들어야 하는데 매번 손으로 조절한다든가 그때마다 변하는 플레이리스트를 만드는 것이 번거로와서 복습을 체계적으로 잘 안하게되더군요.


그래서 그런 부분을 긁어주기 위해 만든 스크립트입니다.
이 스크립트의 유용한점은 많은 화일들의 범위를 지정할 수도 있고,

각각의 화일을  1.0속도 0.7배속도 1.0속도 등으로 시퀜스를 정해서 들려줄 수 있습니다.


(사실 스크립트는 vlc플레이어의 커맨드모드를 이용합니다. vlc는 어떤 리눅스는 딸려오기도 하고 어떤 리눅스는 깔아야할거에요.)
mp3말고 vlc에서 지원되는 화일은 모두 되고요.

어쩌면 자동으로 플레이되어야하는 데모나 프레젠테이션용도로 유용할수 있습니다.

아무튼 동영상이든 음악이든 플레이리스트를 만들기 번잡한 경우 유용합니다.



쓰임은,
 
sqplay * -r -l  : 모두 섞어서 반복하여 들려줌
sqplay * 5   : 5번째 화일만 들려줌
sqplay * 5-10 : 5번째에서 10번째 화일까지 차례로 들려줌

5번째부터 10번째까지의 파일을 다른속도로 1.0 (제속도) 0.8 (80%속도) 1.0 (다시 제속도)로 3번을 들려주려면
다음처럼 사용합니다.
 
sqplay * 5-10 -s1.0-0.8-1.0

* 대신에 find나 ls의 리눅스 명령의 결과를 넣을 수도 있습니다. 예를 들어
$(ls * -t)  로 시간순으로 정렬결과를 넣을수도 있습니다.


조금 실제적인 예로,
최신으로 녹음된 5화일만 순서를 섞어서 1.0-0.8-1.0속도로 3번씩 반복하여 복습하고자 한다면,

sqplay $(ls * -t | tail -5) s1.0-0.8-1.0 -r

학습계획을 세워서 명령어를 저장해 놓으면 좋겠죠.

예를 들어 저는 20190111.mp3 같은 식으로 날자별로 화일을 저장하고 .bashrc에 다음과 같은 앨리어스를 사용해서 만들어놓습니다.


alias review10='cd ~/Documents/chinese && sqplay $(date --date="10 days ago" --rfc-3339=date | tr -d -).mp3 -s1.0-0.7-0.8-1.0'


이런식으로 항상 현재보다 10일 전의 것을 복습할 수 있어서 체계적 학습에 좋습니다.

저는 매우 만족스럽게 사용하는 스크립트네요.

유용히 사용하시길 바랍니다~




------------다음을 sqplay 로 저장하고  chmod +x sqplay 로 실행권한 줘서 사용--------------------------



#!/bin/bash
# Sequence player script using cvlc player
# Usage:
#       sqplay $(ls * | tail -3)             // play last 3 files
#       sqplay $(ls * -t) 5-10               // sort by time then play from 5th to 10th
#       sqplay * 5 -l                        // play 5th file repeatedly.
#       sqplay *.mp3 12-20 -r -l             // play all mp3 files from 12th to 20 with random order repeatedly.
#       sqplay *.mp3 12-20 -s1.0-0.5-0.7     // play all mp3 files from 12th to 20 with speed of 1.0, 0.5, 0.7 (3times per file)
#       sqplay * -l                          // play everything endlessly
#
#       Limitation : space in file is not allowed.

range_ptrn="^[0-9]+\-[0-9]+$"
number_ptrn="^[0-9]+$"

# default range (all)
range_arr[0]=1
range_arr[1]=100000

# default play sequence
# you can give option with format i.e. ( -s1.0-0.5-0.8 )
seq_arr=( 1.0 )

# handle options
for arg in $@; do
    if [[ $arg == -* ]]
    then
        if [[ $arg == "-l" ]]; then
            loop=1
        elif [[ $arg == "-r" ]]; then
            shuffle=1
        elif [[ $arg == "-v" ]]; then
            verbose=1
        elif [[ $arg == \-s* ]]; then
            seq=$(echo $arg | cut -c 3-)
            readarray -t seq_arr <<< $(echo $seq | tr "-" "\n")
        fi
    elif [[ $arg =~ $range_ptrn ]]; then
        readarray -t range_arr <<< $(echo $arg | tr "-" "\n")
    elif [[ $arg =~ $number_ptrn ]]; then
        range_arr[0]=$arg
        range_arr[1]=$arg
    else
        if [ -z ${l+x} ]; then
            l="$arg"
        else
            l+=$'\n'
            l+="$arg"
        fi
    fi
done

# make play list from given range
i=1
for fn in $l; do
    if [[ $i -ge ${range_arr[0]} ]] && [[ $i -le ${range_arr[1]} ]]
    then
        if [ -z ${lst+x} ]; then
            lst=$fn
        else
            lst+=$'\n'
            lst+=$fn
        fi
    fi
    (( i+=1 ))
done

# shuffle
if [[ $shuffle -eq 1 ]]; then
        if [[ $verbose -eq 1 ]]; then
            printf "shuffling...\n"
        fi
    lst=$(printf "$lst" | sort -R)
fi

for (( ; ; ))
do
    for fn in $lst
    do
        n=1
        for seq in "${seq_arr[@]}"; do
            printf "playing $fn #$n at speed $seq\n"
            cvlc -I ncurses $fn --rate="$seq" --play-and-exit
            sleep 1
            (( n+=1 ))
        done
    done
    if [[ $loop -ne 1 ]]
    then
        break
    fi
done

번호 제목 작성자 작성일 조회
201 PostmarketOS: `진짜`리눅스 스마트폰을 구하는 법. [2] piloteer 02.07 41350
200 리눅스민트: 화면분할해서 윈도우배치하기 영진 02.05 40238
199 안드로이드 -> 아이폰 이전시 주의할 점 [1] matsal 11.22 41107
198 리눅스: 구글tts를 이용하기 [1] 영진 10.01 40593
197 리눅스민트 : 구글드라이브 연동하기 2 영진 09.23 40399
196 리눅스: 쉽고 빠른 백업은 없을까? [3] 영진 09.16 9056
195 xfce4에서 generic monitor활용 (막대그래프) file 영진 02.12 8947
194 리눅스: xfce4데스크탑에서 원하는 정보만 표시하기 [1] file 영진 02.05 8857
193 해피해킹키보드 흉내내기 (리눅스) [1] 영진 12.03 9148
192 리눅스민트: 네모액션으로 구글드라이브 연동 [2] file 영진 04.11 9270
191 구글킵 이용하기 [5] file 영진 04.06 9565
» 리눅스: 어학공부를 위한 mp3 플레이어 [2] 영진 01.18 9238
189 리눅스민트: 구글캘린더 연결하기 [1] file 영진 12.19 9508
188 리눅스 : 음성타이머를 만들어보자 [2] 영진 12.08 9152
187 리눅스데스크탑: 구글드라이브로 백업하기 [1] 영진 11.21 8863
186 리눅스데스크탑: 오늘의 인용문 표시하기 영진 10.19 8847
185 리눅스 데스트탑 : i3wm [2] 영진 10.17 8981
184 시내먼 데스크탑: 비트코인 티커 만들기 (초간단) [1] 영진 10.01 8804
183 윈도에서 간단하게 배터리 수명 알아보기 [3] matsal 05.10 9408
182 USB Type-C 케이블과 USB 3.2 그래픽 출력단자 [2] matsal 01.01 12831

오늘:
1,184
어제:
851
전체:
15,151,409