'개발'에 해당되는 글 5건

  1. Mac OS X에 HTK 설치하기 (1) 2009/09/26
  2. Objective-C 공부: 맛배기(1장) 2009/08/24
  3. iPhone App - Midomi 2009/07/11
  4. iPhone App-Nearest Tube 2009/07/09
  5. 아이폰 3GS 전파인증 완료! 2009/07/06

Mac OS X에 HTK 설치하기

from 개발 2009/09/26 12:55
따지고 보면 간단한거고 헤맬게 전혀 없는 부분이지만..

알수 없는 이유로 인해 나는 하루종일 뻘짓만 하면서 실패했다.

나 같은 사람이 다시 안생기기를 바라며 포스팅을 한다..ㅠ


HTK는 Hidden Markov Model Toolkit의 약자로서 주로 음성인식에 사용되는 툴킷이다.

일단 설치를 하려면 파일을 다운받아야 되는데 http://htk.eng.cam.ac.uk/ 여기로 가면 다운을 받을수 있다.

간단한 가입과 함께 다운을 받을수 있는데 Linux, Unix, Mac OS 용 버전과 Windows용 두가지가 있다.

당연히 앞의 것을 받고 원하는 폴더에 압축을 푼다.

압축까지 풀었다면 OK, 이제 시작!

사용자 삽입 이미지
압축을 제대로 풀었다면 그림처럼 htk라는 폴더가 나온다.

이제는 터미널(terminal)을 실행시켜 보자.
사용자 삽입 이미지
터미널을 실행하면 위의 그림처럼 나온다. cd 명령을 이용하여 아까 압축을 풀어놓은 htk폴더로 이동한다.

ls 명령을 사용하면 현재 있는 폴더에서 하위폴더를 볼수 있으니까 적절히 이용해 가면서 찾아 들어가면 된다.
사용자 삽입 이미지
htk 폴더로 들어와서 ls를 쳐보면 위의 그림처럼 나오게 된다.

여기서 ./configure --prefix=/usr/local 이라고 적는다.

htk 사이트에서는 /usr/local 이 아니라 /tmp 로 하라고 되어있었는데.. 이것때문에 하루종일 고생했다..ㅠ

사용자 삽입 이미지
명령어가 정확하게 적혔으면 위와 같은 글들이 나온다. 이제 여기서 make all 이라고 적는다.
사용자 삽입 이미지
뭔가 또 줄줄이 실행된다. 약간만 기다리면 컴파일이 완료된다.

그다음 해야 될 부분이 make install 이라는 명령어를 적어 줘야 되는데 여기서 그냥 적으면 이런 메세지가

나올것이다.
사용자 삽입 이미지
에러가 잔뜩 뜬다. 사용자 권한 문제인데 이걸 해결하려면 su 명령어를 사용해서 superuser모드로 실행해야된다.
사용자 삽입 이미지
su 를 치고 패스워드를 입력해야 되는데 패스워드는 사용자 계정 패스워드 또는, 그냥 엔터 치면 된다.

참고로 superuser 패스워드 변경하는 방법은  sudo passwd 를 치고 패스워드를 입력하면 된다.

사용자 삽입 이미지
su 모드에서 make install 명령어를 실행하고 나면 위의 그림처럼 나온다. 완료 된것이다.

htk가 정상적으로 동작 하는지를 알아보려면 htk사이트에 있는 sample파일을 다운받아서 HTKDemo를 실행

해보면 된다.

적절한 폴더에 샘플 파일 압축을 풀고

cd HTKDemo
mkdir -p hmms/{tmp,hmm.{0,1,2,3}} proto acc test
perl runDemo configs/monPlainM1S1.dcf

를 차례대로 적으면

사용자 삽입 이미지
결과가 나온다.

이제 HTK는 설치되었으니, 본격적으로 인식기를 구현하기만 하면 된다.
2009/09/26 12:55 2009/09/26 12:55
오브젝티브 C의 첫번째 블로깅..

한 한달 약간 안되는 기간동안..(사실 연구실에서는 다른 과제를 하느라 오브젝티브C공부한건 일주일도 안되는것 같다)

처음에는 전혀 감을 못 잡았는데, 이제 슬슬 뭔가 감이 오는것 같기도 해서

감을 까먹지 않기 위해! 블로깅을 해서 감을 유지하려고 한다..

사실 아이폰 어플 개발하려고 시작한 언어이고, C언어 조차 기본이 잘 안되어있고.. 객체지향은 당연히 안드로메다의 이야기..ㅠ

그렇기 때문에 내 실력은 형편이 없다..

하지만..시작이 반이라고.. 일단 시작을 해보자..
사용자 삽입 이미지
일단 오브젝티브 c를 시작하려면 Xcode라는 프로그램이 있어야 한다. 무료프로그램이고 애플 개발자 사이트에서

다운 받을수 있다. 위의 그림은 Quick Silver라는 프로그램으로 xcode를 런칭한 그림이다.

사용자 삽입 이미지

새 프로젝트를 만들면 위와 같은 화면이 나온다. 왼쪽에 보면 아이폰과 맥OS용 프로그램 이렇게 2가지로 만들수

있는데, 지금 당장은 아이폰 어플리케이션을 만들게 아니기 때문에 Mac OS X에서 Application탭을 누르고

Cocoa Application을 선택한다. 그리고 자신이 원하는 적절한 프로젝트 이름을 붙이면 프로젝트는 만들어진다.

사용자 삽입 이미지

프로젝트가 만들어지면 그림처럼 왼쪽에 Class, Other Sources등과 같은 부분이 나온다.

사용자 삽입 이미지
Class에는 헤더 파일이 들어가고 main함수는 그림에서와 같이 Other source폴더에 있다. objective c에서 파일 확장자는 .m이다.

main.m파일을 클릭하면 바로 밑에 창에서 내용을 확인 할 수가 있고, 더블클릭을 하게 되면 새 창에서 내용이 나온다.

이제 메인 함수를 적어보자.
사용자 삽입 이미지

C에서는 헤더 파일을 읽어들일때 #include라는 명령어를 쓰는데 objective c에서는 #import라는 명령어를 사용한다.

printf 함수를 사용하기 위해서 stdio.h를 import 시켰다.

그 다음은 클래스를 선언하고 구현하는 부분인데, 사실 이 부분은 따로 헤더파일로 만들어 주면 좋다.

나중에 소스가 길어지면 이런 클래스들이 메인 파일에 있는것보다 헤더 파일에 있는게 더 깔끔하고 알아보기 쉬울것이다.

지금은 복잡한 코딩이 아니니까 그냥 이렇게 썼다.

클래스를 선언하려면

@interface 클래스명: 슈퍼 클래스명
{
인스턴스 변수 선언;
}
메소드 선언
@end

이렇게 적는다. 인스턴스 변수는 다른 객체를 참조하는 포인터라고 보면 되는데 지금 소스에서는 따로 참조 할게 없기 때문에

비워두고 메소드만 선언을 하였다.

이렇게 선언된 클래스는 슈퍼 클래스의 모든 기능을 상속 받는다. 거기다가 자신만의 메소드가 추가 되었기 때문에

자식 클래스는 슈퍼 클래스 보다 더 넓은 개념이다.


자, 이렇게 Test라는 클래스를 선언하고 클래스 안에는 sayHello라는 메소드를 선언했다.

그렇다면 이 sayHello라는 메소드는 뭐하는 놈인지 '구현'을 시켜줘야 할것이다.

그 부분이 implementation부분이다.

@implementation 클래스 이름
메소드 정의
@end

이렇게 적는다. 위의 소스에서는 sayHello라는 메소드는 printf 함수를 실행시킨다는것을 알수 있다.


즉, interface에서는 내가 어떤 클래스를 만들것이고, 그 클래스에는 어떠어떠한 메소드를 할것이다 정해놓으면

implementation에서 실제 그 메소드의 기능을 구현 시켜주면 된다. 꽤 직관적인 방법인것 같다.


이제 클래스가 만들어졌으면 본격적으로 메인함수로 와서 코딩을 한다.

id 타입으로 sample이라는 놈을 만들고

sample = [[Test alloc] init];

이 명령은 sample이라는 녀석은 Test라는 클래스를 allocation 시켜서 initialize 했다는 말이다.

뭔 말인고 하니.. 변수 = [Class alloc]을 해줘야지 변수를 해당 클래스로 메모리에 공간을 확보할수 있다.

그리고 그 확보한 공간에서 객체를 사용하려면 초기화를 시켜줘야 하는데 이 초기화하는 메소드가 init이다.

코코아 환경에서 초기화 메소드이름은 대부분 init으로 시작한다(ex. initWith..)

따라서

sample = [[Test alloc] init];

를 하게 되면 sample이라는 Test클래스의 객체가 초기화 되어서 사용을 할수 있게 된다.

객체에서 메소드를 실행하려면 [객체 메소드]이렇게 적으면 된다.

[sample sayHello] 이렇게 하면

sample이라는 객체가 sayHello 메소드를 수행하라라는 말이다.

실제로 sayHello라는 메소드는 Hello world를 출력하는 메소드기 때문에 화면에 글자를 출력시켜준다.


사실 이렇게 간단하게 Hello world라는 글자를 출력시키는데는 굳이 클래스를 만들 필요도 없고

그냥 메인함수에서 printf만 써도 되기는 한다. 하지만 objective c에서 클래스 구현과 사용 방법을 알아보기 위해

위와 같이 약간 번거로운 작업을 하게 되었다.

사용자 삽입 이미지
빌드를 하고 실행을 하려면 command - R을하면 되고

실행된 콘솔 창을 확인하려면 shift - command - R을 하면 된다.
사용자 삽입 이미지

실행 된 콘솔 창이다. Hello world가 보인다! 성공!
2009/08/24 16:49 2009/08/24 16:49

iPhone App - Midomi

from 개발 2009/07/11 10:24
어디선가 흘러나오는 매력적인 노래의 제목을 모를 때, 궁리를 해 봤자 알기 힘들죠?
미도미(midomi)는 음악의 멜로디를 허밍이나 대충 부르면, 자동으로 노래 제목을 알아 맞춰 줍니다.
몇 번 해봤는데 거의 정확하게 맞춥니다. 놀랍더군요.
녹음된 음악의 경우는 더 정확하게 제목을 알아 냅니다.

더 좋은 점은 찾아낸 노래를 바로 구매하여 아이폰으로 계속 들을 수 있다는 것이죠.
TV, 라디오를 들을 때 좋은 노래가 있으면, 그 노래의 제목을 모르고도 자동으로 찾고 구매할 수 있다는 것입니다.

비슷한 앱으로 샤잠(Shazam)이 있습니다. 하지만 미도미와 달리, 사람이 직접 부르는 멜로디에는 반응을 하지 않습니다.
녹음된 음악 멜로디에만 반응을 하고, 제목을 찾아 주죠.

따라서 미도미가 샤잠보다는 더 많은 기능을 제공하는 셈입니다.

안타까운 점은 미도미와 샤잠, 둘 다 한국의 노래 제목은 맞추지 못합니다.
한국형 미도미가 앱으로 판매되기를 기대해봅니다.


출처:앱톡

2009/07/11 10:24 2009/07/11 10:24

iPhone App-Nearest Tube

from 개발 2009/07/09 09:59

이건.. 정말 놀랍다..

정말.. 무서울 정도로 식은 땀이 날 정도로 두려울 정도로 기술력이 놀랍다..ㅠㅠ

비록 나도 공대생이지만 내가 지금 뭘 하고 있나 뭘 배우고 있나 허탈감이 든다..


아이폰에 있는 GPS와 함께 카메라를 이용해서 증강현실(Augmented Reality)기술을 접목시킨

기술이다.

카메라로 보이는 화면에 날씨정보, 버스노선, 거리, 등등 다양한 정보를 겹쳐서 보여준다.

iPhone 3Gs에서만 사용 가능하고 조만간 출시 될 예정.

사용자 삽입 이미지

2009/07/09 09:59 2009/07/09 09:59
http://www.rra.go.kr/approval/status/view.jsp?category=4&no=APA-A1303
http://www.rra.go.kr/approval/status/view.jsp?category=4&no=APA-A1303N

iPhone 3GS A1303 전파인증 완료 2009-07-06

드디어!!!
2009/07/06 17:11 2009/07/06 17:11