2017-01-08 4 views
2

Ich benutze das Programm unten angegebenen Link auf Linux. Python: Wie bekomme ich eine rohe Audiodatei mit pyaudio für die Google Cloud Speech API

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/quickstart.py

Das Problem, das ich bin vor, wie meine eigene Roh-Audio-Datei durch das Mikrofon aufgenommen bekommen pyaudio das obige Programm zu verwenden, mit Text zu bekommen, was ich aufgenommen haben.

Ich habe das untenstehende Programm von Pyaudio, aber es gibt mir WAV-Datei. Aber ich möchte rohe Audiodatei für Google Cloud Speech API speichern. Ich möchte WAV nicht in RAW-Audiodatei konvertieren. Ich möchte direkt Rohaudio-Datei mit Pyaudio speichern.

import pyaudio 
import wave 

FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
CHUNK = 1024 
RECORD_SECONDS = 5 
WAVE_OUTPUT_FILENAME = "file.wav" 

audio = pyaudio.PyAudio() 

# start Recording 
stream = audio.open(format=FORMAT, channels=CHANNELS, 
      rate=RATE, input=True, 
      frames_per_buffer=CHUNK) 
print "recording..." 
frames = [] 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
data = stream.read(CHUNK) 
frames.append(data) 
print "finished recording" 


# stop Recording 
stream.stop_stream() 
stream.close() 
audio.terminate() 

waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb') 
waveFile.setnchannels(CHANNELS) 
waveFile.setsampwidth(audio.get_sample_size(FORMAT)) 
waveFile.setframerate(RATE) 
waveFile.writeframes(b''.join(frames)) 
waveFile.close() 

Antwort

2

Ich habe die Antwort gefunden. Entschuldigung für das Posten der Frage. Ich bin neu in Programmierung ..

import pyaudio 
import wave 

FORMAT = pyaudio.paInt16 

CHANNELS = 1 
RATE = 16000 
CHUNK = int(RATE/10) 
RECORD_SECONDS = 5 

audio = pyaudio.PyAudio() 

# start Recording 
stream = audio.open(format=FORMAT, channels=CHANNELS, 
      rate=RATE, input=True, 
      frames_per_buffer=CHUNK) 
print "recording..." 
frames = [] 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
    data = stream.read(CHUNK) 
    frames.append(data) 
print "finished recording" 


# stop Recording 
stream.stop_stream() 
stream.close() 
audio.terminate() 



file = open("newfile.raw", "w") 
file.write(b''.join(frames)) 
file.close() 
+2

Entschuldigen Sie nicht für Fragen, so lernen wir. Außerdem können Sie gerne Ihre eigenen Fragen beantworten. Anstatt jedoch nur einen funktionierenden Code zu veröffentlichen, erläutern Sie bitte Ihre Lösung in Ihrer Antwort. Danke, dass du der Community hilfst! –

+1

@Rightleg Vielen Dank für Ihren wertvollen Rat. Ich werde den Code vom nächsten Mal in meiner Antwort erklären. Aber hier ist das Problem, dass ich auch den Code nicht verstanden habe. Wie auch immer viel Glück !. –

Verwandte Themen