포터블기기 강좌


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

(저는 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

번호 제목 작성자 작성일 조회
21 초보자들을 위한 타오바오에서 중국 폰 구매시 주의 사항 [8] 풀맨 10.13 28883
20 부모들이 알아야 하는 아이들의 스마트폰 셋팅하는 법... (19금일까나??) [18] 星夜舞人 05.22 30520
19 중국산 태블릿 터치패널 교체 하기 [7] file 풀맨 01.23 30618
18 otp 인증 유지를, 다시 사용하고 싶을때 - 네이버 고객센터 안내 받음 맑은하늘 07.31 31498
17 뷰2와 Smart App Protector 연동 문제점 맑은하늘 09.12 31618
16 또 다른 MTK6589 루팅방법 [2] Lock3rz 07.22 31822
15 ZTE 번들 백업 어플 [4] file tomeast 08.23 31970
14 MTK 6577, 6589 루팅 방법 [14] file tomeast 05.31 32068
13 중국산 스마트폰 구입시 한국 사용 가능 여부 체크 포인트 [7] file tomeast 05.21 32385
12 아이튠즈에서 iOS 앱이 내 구매기록에서 사라졌을 때 [3] file 파리 02.04 32530
11 MT65xx Preloader 드라이버 설치 Lock3rz 07.24 32709
10 구형 안드로이드폰들에서 2-step verification 사용하여 구글계정관리하기 [4] scotch 09.23 32832
9 iPhone 이 진짜 벽돌이 되었다고 느낄때. [16] 김강욱 09.24 33442
8 안드로이드 어플에서 외부 USB 메모리, SD카드 쓰기 안될때 해결책 피델리티 07.18 33596
7 SmartQ Z-Watch의 배터리를 오래 사용할수 있는 팁입니다. [14] 저스틴 11.18 34948
6 [펌] 지메일 첨부 파일 삭제 및 용량 줄이는 방법 [4] 맑은하늘 08.23 36698
5 리눅스민트: 화면분할해서 윈도우배치하기 영진 02.05 40374
4 리눅스민트 : 구글드라이브 연동하기 2 영진 09.23 40469
3 리눅스: 구글tts를 이용하기 [1] 영진 10.01 40693
2 안드로이드 -> 아이폰 이전시 주의할 점 [1] matsal 11.22 41307

오늘:
227
어제:
579
전체:
15,215,622