読者です 読者をやめる 読者になる 読者になる

つれづれダラダラ趣味開発

ラズパイとかpythonとかarduinoとか

raspberry pi(raspbian)で「pygame.mixer.music.queue」が動かない話

実質的には1回目の投稿にも関わらず成果物ではなくてこんな話.

タイトル通りに「pygame.mixer.music.queue」が動かない話です.

以下環境

・ハード:Raspberry Pi3 Model B

・OS   :RaspbianJessie with PIXEL January 2017

・言語 :Python 3.4.2 (↑に同梱されているまま)

 

で,連続した音声を再生するプログラムをつくろうとしたら

pygame.mixer.music.queue」が動かない.

python初学者のためプログラムミスかと思いましたがどうにも動かない.

ググってみるもpygameを扱った日本語サイト少なくて悪戦苦闘.

仕方なしに英語サイトをググって出てきたのが↓の.

Raspberry Pi • View topic - pygame.mixer.music.queue not working for me!

要約すると「おま環」らしい.

 

というわけで迂回技術

 

import wave


def get_wav_length(voice_file_name):
   wf = wave.open( voice_file_name , "r" )
   wav_length = wf.getnframes() / wf.getframerate() 

   return wav_length

 

pygame.mixer.music.load( "ファイル名.wav" )
sleeptime = get_wav_length( "ファイル名.wav" )
pygame.mixer.music.play()
time.sleep ( sleeptime  )

 

もともとタイムクリティカルなものを扱う言語ではないので,

これで実用上は問題なし.

 

ただ,あくまでWAVE形式のみの機能となる.

都度生成する必要がないのならば,CSVファイルに再生時間を書き出しておいて,

それを読み込むのも手ではある.