Mycroft input device

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