今夜はJetson-nanoでPyaudioを使ってみる。
一応、先日の会話アプリで音声発生までできました。
が、。。。
やったこと
・簡単なオーディオアプリを動かす
・会話アプリ(音声付)を動かす
・エラーについて
・簡単なオーディオアプリを動かす
入力を鸚鵡返しに返す以下のアプリを動かしてみました。
なんの問題もなく、動きました。
# -*- coding:utf-8 -*-
import pyaudio
RATE=44100
p=pyaudio.PyAudio()
N=200
CHUNK=1024*N
stream=p.open( format = pyaudio.paInt16,
channels = 1,
rate = RATE,
frames_per_buffer = CHUNK,
input = True,
output = False) # inputとoutputを同時にTrueにする
stream_=p.open( format = pyaudio.paInt16,
channels = 1,
rate = int(RATE*1.41),
frames_per_buffer = CHUNK,
input = False,
output = True) # inputとoutputを同時にTrueにする
while stream.is_active():
input = stream.read(CHUNK)
output = stream_.write(input)
環境
上記を動かすにあたり、環境は設定ーサウンドで変更できて、以下のとおりとしました。
出力
入力
入力はマイクの接続はしていませんが、音入力付のusbカメラを接続すると、以下の3つが出てきます。
ここで、二番目の。。camと三番目のマイクはどちらもカメラ付属のマイクのようで、どちらも入力できました。
アプリケーション
このアプリケーションはそれぞれ、streamのinput=Trueとstream_のoutput=Trueに対応しています。4つともTrueにすれば4個出現します。両方とも音を大きくしておかないと音が出ません。
ちなみに、アプリが起動しているときだけ出現します。
・会話アプリ(音声付)を動かす
もうここまで来ると、先日の会話アプリが動きます。
音素を以下からダウンロードしてMusicの下に置きました。
・AudioAutoencoder/data/
そして、text2speak()を復活させるとおまけのような会話が応答は音声つきで得られました。(音声はひどいけど)
しかし、先程のアプリも同じですが、エラーが残ってしまいました。
・エラーについて
上記のとおり、動くのは動きますが、以下のエラーが消えませんでした。
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.tegra-hda.pcm.front.0:CARD=0'
...
このエラーは素直に読めば、
「以下の定義が見つからない 'cards.tegra-hda.pcm.front.0:CARD=0'」
というALSAエラーということです。
ということで、以下を見てみましたが、まあないですよね。
上記をいかのファイルに定義すれば解決しそうな気もしますが、どのように定義していいか分からないので、今回は止めることとしました。
$ cat /usr/share/alsa/alsa.conf
#
# ALSA library configuration file
#
ちなみに、この類似エラーはRasiPiでも出ているようで、ぐぐるとたくさん出てきますが、どうもtegraというか、Jetson-nanoのものが見つかりませんでした。
※今のtegraスキルだと歯が立たないので記録して将来に持ち越すこととします
まとめ
・エラーは出ているものの音声を扱えるようになった
・会話アプリが同程度の性能で動いた
・Jetson-nanoを利用したアプリを作ろうと思う
おまけ
> なになに
(0.00): コンビニ や 公衆トイレ で 早め に 済ませ て ください ,
> おしっこかよ
(0.38): 草津 だ よ ,
> 草津行きたいの
(0.81): 草津 に 行き たい な ,
> じゃ、明日行こうか
(0.83): じゃ 、 明日 どこか 行こ う か ,
> そうだね、 明日草津に行こう
(0.87): そう だ ね 、 箱根 に 行こ う
> あれ、箱根に行きたいの
(0.83): 箱根 に 行き たい の ,
> じゃ、明日箱根に行こう
(0.86): じゃ 、 箱根 に 行こ う か ,
> どうやって行く
(0.55): どう やっ て 参加 する か 知っ てる
> 参加じゃなくて、行こうよ
(0.42): じゃ 、 行こ う か ,
> 何 どうやって行く
(0.96): どう やっ て 行く の ,
ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred
> ドライブしようよ
(0.35): 行こ う よ ,
> やはり、朝早く行きたいな
(0.38): ドライブ 行き たい ,
> 運転はできるんだっけ
(0.47): ドライブ だ から 遊び だ けど 、 運転 できる
> 運転できるんだね
(0.55): そう じゃ なく 、 運転 できる
> じゃ、運転手やってね
(0.34): 誰か 運転手 が いれ ば 行ける よ ,
> 運転できるんなら、運転してほしいな
(0.62): 運転 は できる の ,
> ウワンは 長いこと運転してないからできないよ
(0.40): だから 、 免許 持っ て ないと 運転 できないよ ,
> 免許は持っているけど、ずーと運転してないんだよ
(0.63): そう いえ ば 、 ウワン は 免許 は 持っ て いる けど 、 運転 でき ない けど どう する ,
> 君が運転できるんなら問題ないでしょ
(0.38): 運転 も 出来 ない でしょ
> 運転できないの
(0.50): 運転 できる の ,
> だから、ウワンは運転できないよ
(0.31): ウワン は 自転車 乗れる よ
> 自転車じゃ、どうにもならないよ
(0.35): 自転車 で 行く ん じゃ ない よ 、 車 で 行く ん だ よ ,
> そうだよ
(0.70): そう だ ね ,