4

I got an error,ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory . When i run this code

#!/usr/bin/env python
from __future__ import division
import re
import sys
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
import pyaudio
from six.moves import queue
# [END import_libraries]

# Audio recording parameters
RATE = 44100
CHUNK = 8192  # 100ms

class MicrophoneStream(object):
    def __init__(self, rate, chunk):
        self._rate = rate
        self._chunk = chunk

        # Create a thread-safe buffer of audio data
        self._buff = queue.Queue()
        self.closed = True

    def __enter__(self):
        self._audio_interface = pyaudio.PyAudio()
        self._audio_stream = self._audio_interface.open(
            format=pyaudio.paInt16,
            channels=1, rate=self._rate,
            input=True, frames_per_buffer=self._chunk,
            stream_callback=self._fill_buffer
        )

        self.closed = False

        return self

    def __exit__(self, type, value, traceback):
        self._audio_stream.stop_stream()
        self._audio_stream.close()
        self.closed = True
        self._buff.put(None)
        self._audio_interface.terminate()

    def _fill_buffer(self, in_data, frame_count, time_info, status_flags):
        self._buff.put(in_data)
        return None, pyaudio.paContinue

    def generator(self):
        while not self.closed:
            chunk = self._buff.get()
            if chunk is None:
                return
            data = [chunk]

            while True:
                try:
                    chunk = self._buff.get(block=False)
                    if chunk is None:
                        return
                    data.append(chunk)
                except queue.Empty:
                    break

            yield b''.join(data)

def listen_print_loop(responses):
    num_chars_printed = 0
    for response in responses:
        if not response.results:
            continue

        result = response.results[0]
        if not result.alternatives:
            continue

        transcript = result.alternatives[0].transcript

        overwrite_chars = ' ' * (num_chars_printed - len(transcript))

        if not result.is_final:
            sys.stdout.write(transcript + overwrite_chars + '\r')
            sys.stdout.flush()

            num_chars_printed = len(transcript)

        else:
            print(transcript + overwrite_chars)

            if re.search(r'\b(exit|quit)\b', transcript, re.I):
                print('Exiting..')
                break

            num_chars_printed = 0


def main():
    language_code = 'en-US'  # a BCP-47 language tag

    client = speech.SpeechClient()
    config = types.RecognitionConfig(
        encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=RATE,
        language_code=language_code)
    streaming_config = types.StreamingRecognitionConfig(
        config=config,
        interim_results=True)

    with MicrophoneStream(RATE, CHUNK) as stream:
        audio_generator = stream.generator()
        requests = (types.StreamingRecognizeRequest(audio_content=content)
                    for content in audio_generator)

        responses = client.streaming_recognize(streaming_config, requests)

        listen_print_loop(responses)


if __name__ == '__main__':
    main()

The error happens

ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory

I think I already installed needed thing to play sound in raspberrypi.So I really cannot understand why this error happens.I changed value of RATE &CHUNK like RATE = 8000 or CHUNK = 1024 *2 ect,but same error happens.How can I fix this?Didn't I install necessary thing to play sound?

user8817477
  • 739
  • 1
  • 8
  • 12

2 Answers2

1

I am also using google cloud speech recognition in raspberry pi and getting the same errors. However, in my case, the speech recognition is working despite these errors.

I have found this answer: PyAudio working, but spits out error messages each time . It seems that this is a problem with the /usr/share/alsa/alsa.conf file. I commented the lines linked to the errors and the error messages were gone. The original aswer suggests not to comment the lines, but it was the fastest way to check if it worked.

If you are not able to use the Speech API your problem is not related to those error messages.

Diego
  • 1,232
  • 17
  • 20
0

For anyone experiencing this error on a raspberry pi using the SpeechRecognition python library what fixed it for me was ensuring that I specified the proper device index e.g. sr.Microphone(device_index=2) you can see what devices you have and the index of them by running aplay -l

syntactic
  • 109
  • 6