나는 이것을 했다:
me@riverbrain:~/sgf$ echo "test" | text2wave -otype raw -F 16000 >> test.raw
헤드리스 오디오 파일을 생성합니다. 이 파일의 놀라운 점은 cat
다른 원시 오디오 파일(예: 텍스트 사용)과 연결할 수 있다는 것입니다.
물론 질문이 있습니다. 문제는 아직 플레이를 할 수 없다는 것입니다.
me@riverbrain:~/sgf$ play test.raw
play FAIL formats: bad input format for file `test.raw': sampling rate was not specified
또한 샘플링 속도를 지정할 때
me@riverbrain:~/sgf$ play -r 16000 test.raw
play FAIL formats: bad input format for file `test.raw': data encoding was not specified
일부 "인코딩" 정보를 검색했을 때 프로세서 아키텍처와 많은 관련이 있다는 느낌을 받았지만 아마도 제가 틀렸을 수도 있습니다. 어쨌든, 원시 오디오 파일의 데이터 인코딩이 무엇인지 컴퓨터에 "질문"하는 방법에 대한 문서를 찾을 수 없습니다. 샘플링 레이트도 제가 직접 설정해서 알지만, 제가 알 수 있는 건 이게 전부입니다.
답변1
다양할 수 있지만 적어도 나에게는 text2wave가 1채널, 16비트, 부호 있는 정수 PCM을 생성합니다. 이것들은 모두 상당히 정상적이며 올바르게 사용하면 매우 명확해질 것입니다(예: 부호 없는 정수를 잘못 사용하면 소리가 극도로 왜곡됩니다)
이를 가지고 놀려면 다음과 같습니다.
play -r 16000 -b 16 -c 1 -e signed-integer /tmp/foo.raw
play -r 16000 -2 -s -c 1 /tmp/foo.raw # obsolete way for older versions of Sox
나는 이러한 매개변수가 Festival 어딘가에 구성되어 있다고 생각합니다. 이들 중 일부는 하드코딩될 수도 있습니다.
아키텍처와 관련된 유일한 문제는 빅엔디안과 리틀엔디안입니다. 제 리틀엔디안 시스템에서는 페스티벌이 리틀엔디안을 작성하고 있습니다. 파일을 빅엔디안 시스템으로 옮기면 -L
. 빅 엔디안 시스템에서 실행하는 경우 text2wav
빅 엔디안 데이터를 쓸지 아니면 리틀 엔디안 데이터를 쓸지 확실하지 않습니다.
답변2
-t 스위치를 통해 원시 오디오를 지정할 수 있도록 원시 파일을 재생하는 aplay
대신 사용하십시오 .play
aplay -q -c 2 -t raw -f s16 test.raw
답변3
자신만의 RIFF 헤더를 만들 수도 있습니다. 그냥 좀 치고... 그런 다음 다른 섹션 위에 제목을 넣으세요...
이 링크는 헤더 레이아웃을 보여줍니다.표준 WAVE 파일 형식
SO에는 관련 링크도 있습니다.스크립트를 사용하여 RAW 오디오 데이터를 WAV로 변환, 그러나 mplayer/mencoder의 답변에 대한 토큰 수는 0입니다. 그러나 그것은 보인다삭스일하다.
삭스위의 두 링크 모두에 언급되어 있으며 우분투 저장소에서 찾을 수 있습니다. 다른 사람들도 마찬가지라고 가정합니다.
추신...방금 사용해 보았는데 play
(존재하는지 몰랐음) SoX라는 걸 알게 됐어요! ...SO 링크는 여기에 복사된 예를 제공합니다.sox -r 44100 -e unsigned -b 8 -c 1 <RAW_FILE> <TARGET_FILE>
당신이 그것을 작동시킬 수 없다면삭스, 아마도 mplayer/mencoder 또는 RIFF 헤더가 도움이 될 것입니다.