Hey guys,
I am very new to mycroft, and I am experiencing some issues with my audio input. I have installed mycroft about a week ago and have managed to get everything working apart from the audio. I have run through all the audio troubleshooting tips on mycroft-ai.gitbook.io, and it still is not working. I have however found out that both alsa and mycroft seem to recognize my device, but nether seems to actually get any input.
I think I have tried just about everything and I am at a complete loss.
My input device is a Logitech C270 HD Webcam (This was in the list of tested devices)
And I am running Mycroft on a virtual machine with a Windows 10 host with audio input enabled.
For some extra info:
My pulseaudio default device is set correctly
@yorickroft - welcome to the community!
-
Does
aplay -l
list your mic? -
Does mycroft-mic-test successfully record and play back voice?
Hope this helps.
-Mike Mac
To the first question yes it does list my mycrophone, but none of the audio tests in mycroft or in pulse audio record anything. I have tried with 3 microphones now with the last test being with an entirely new mic.
I wrote a script testrecord in mycroft_tools on my github.
It checks rate, num channels and format found in /proc. Maybe it will help:
function recordCard()
# Record audio from a specific card
# Arg 1: card number
{
local cardNum=$1
local cardDir="/proc/asound/card$cardNum/pcm0c/sub0"
if [ ! -d $cardDir ]; then
echo "Uh-oh! $cardDir is not a directory"
exit 4
fi
local hw_paramsFile="$cardDir/hw_params"
if [ ! -f $hw_paramsFile ]; then
echo "Uh-oh! $hw_paramsFile is not a file"
exit 4
fi
# try to get rate, num channels and format from the hw_params file, or use defaults
local rateClause=`grep rate: $cardDir/hw_params | awk '{print $2}'`
if [ "$verbose" = 2 ]; then
echo "rate = $rate"
fi
if [ ${#rateClause} != 0 ]; then # a rate was found
rateClause="-r $rateClause" # add -r flag
else
rateClause="-r 44100" # default to 44100 bit sample rate
fi
local channelsClause=`grep channels: $hw_paramsFile | awk '{print $2}'`
if [ "$verbose" = 2 ]; then
echo "channelsClause = $channelsClause"
fi
if [ ${#channelsClause} != 0 ]; then # number of channels found
channelsClause="-c $channelsClause" # add -c flag else default to 1 channel
fi
local formatClause=`grep ^format: $hw_paramsFile | awk '{print $2}'`
if [ "$verbose" = 2 ]; then
echo "formatClause = $formatClause"
fi
if [ ${#formatClause} != 0 ]; then # format found in hw_params file
formatClause="-f $formatClause" # add -f flag
else
formatClause="-f S24_LE" # default to 24 bit format
fi
# put the arecord command together and run it
cmd="arecord $rateClause $channelsClause $formatClause -d $numSecs /tmp/test-mic.wav"
echo "Testing your microphone for $numSecs seconds - SAY SOMETHING!"
echo "INFO: running command: $cmd"
$cmd # run the command
rc=$?
if [ "$rc" != 0 ]; then # something didn't work
echo "ERROR: command $cmd failed with $rc"
exit $rc # not successful
fi
} # recordCard()
-Mike Mac
I think I found the problem, when I plug in my webcam it gives the following error message:
device descriptor read/all, error -32
and then
cannot set freq 24000 to ep 0x82
I have found online that this cannot be solved, and I need a different mic, is that true?
Try it. You said you have 3?
-Mike Mac