raspberry pi 1でtensorflow lite その14
2955 ワード
概要
raspberry pi 1でtensorflow liteやってみた。
マイク入力を扱うので、alsaを叩いてみた。
写真
Makefileを書く。
.PHONY: all clean
all: main
main: pcm4.c
gcc pcm4.c -o test -lasound -lm
clean:
rm -f test
サンプルコード
.PHONY: all clean
all: main
main: pcm4.c
gcc pcm4.c -o test -lasound -lm
clean:
rm -f test
マイク入力をそのまま、スピーカー出力。
#include <stdio.h>
#include <alsa/asoundlib.h>
#define OUT_FREQ 44100
#define IN_FREQ 44100
int main(int argc, char * argv[])
{
int err;
int i;
snd_pcm_t * in_handle;
snd_pcm_t * out_handle;
snd_pcm_sframes_t frames;
char * device = "default";
short in_buffer[IN_FREQ * 5];
short out_buffer[OUT_FREQ * 5];
if ((err = snd_pcm_open(&in_handle, device, SND_PCM_STREAM_CAPTURE, 0)) < 0)
{
fprintf (stderr, "Capture open error: %s\n", snd_strerror(err));
return 1;
}
if ((err = snd_pcm_set_params(in_handle, SND_PCM_FORMAT_S16_LE, SND_PCM_ACCESS_RW_INTERLEAVED, 1, IN_FREQ, 1, 1000 * 1000)) < 0)
{
fprintf (stderr, "Capture open error: %s\n", snd_strerror(err));
return 1;
}
if ((err = snd_pcm_open(&out_handle, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0)
{
fprintf (stderr, "Playback open error: %s\n", snd_strerror(err));
return 1;
}
if ((err = snd_pcm_set_params(out_handle, SND_PCM_FORMAT_S16_LE, SND_PCM_ACCESS_RW_INTERLEAVED, 2, OUT_FREQ, 1, 1500 * 1000)) < 0)
{
fprintf (stderr, "Playback open error: %s\n", snd_strerror(err));
return 1;
}
while(1)
{
frames = snd_pcm_readi(in_handle, in_buffer, IN_FREQ);
if (frames < 0)
{
frames = snd_pcm_recover(in_handle, frames, 0);
}
if (frames < 0)
{
fprintf (stderr, "snd_pcm_readi failed: %s\n", snd_strerror(frames));
}
fprintf(stderr, "%d ", frames);
for (i = 0; i < frames; i++)
{
out_buffer[2 * i] = in_buffer[i];
out_buffer[2 * i + 1] = in_buffer[i];
}
frames = snd_pcm_writei(out_handle, out_buffer, OUT_FREQ);
if (frames < 0)
{
frames = snd_pcm_recover(out_handle, frames, 0);
}
if (frames < 0)
{
fprintf(stderr, "snd_pcm_writei failed: %s\n", snd_strerror(frames));
}
}
snd_pcm_close(in_handle);
snd_pcm_close(out_handle);
return 0;
}
以上。
Author And Source
この問題について(raspberry pi 1でtensorflow lite その14), 我々は、より多くの情報をここで見つけました https://qiita.com/ohisama@github/items/5775a68d7e16dfafb8c6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .