2017-02-23 11 views
0

を与える: Errno 13 Permission denied: 'file.mp3' Python Error while re-opening sound file in pythonはPythonでファイルを再開ける私が検索し、解決策がここで提案を実装しようとしたアクセス権のエラー

をしかし、これに何か良い解決策があるようには思えません。ここに私のコードは、誰でも私がここで間違って何を言っていることができます:

#!/usr/bin/env python3 
# Requires PyAudio and PySpeech. 
import time, os 
import speech_recognition as sr 
from gtts import gTTS 
import pygame as pg 
import mutagen.mp3 

#Find out what input sound device is default (use if you have issues with microphone) 
#import pyaudio 
#sdev= pyaudio.pa.get_default_input_device() 

def play_music(sound_file, volume=0.8): 
    ''' 
    stream music with mixer.music module in a blocking manner 
    this will stream the sound from disk while playing 
    ''' 
    # set up the mixer, this will set it up according to your sound file 
    mp3 = mutagen.mp3.MP3(sound_file) 
    pg.mixer.init(frequency=mp3.info.sample_rate) 
    pg.mixer.music.set_volume(volume) 
    try: 
     pg.mixer.music.load(sound_file) 
     print("HoBo Sound file {} loaded!".format(sound_file)) 
    except pg.error: 
     print("HoBo Sound file {} not found! ({})".format(sound_file, pg.get_error())) 
     return 
    pg.mixer.music.play() 
    while pg.mixer.music.get_busy() == True: 
     continue 
    pg.mixer.quit() 
    sound_file.close() 

def speak(audioString): 
    print(audioString) 
    tts = gTTS(text=audioString, lang='en') 
    tts.save("audio.mp3") 
    # pick a mp3 file in folder or give full path 
    sound_file = "audio.mp3" 
    # optional volume 0 to 1.0 
    volume = 0.6 
    play_music(sound_file, volume) 

def audioIn(): 
    # Record Audio from Microphone 
    r = sr.Recognizer() 
    with sr.Microphone() as source: 
     print("Say something!") 
     audio = r.listen(source) 

    # Google Speech Recognition 
    try: 
     # for testing purposes, we're just using the default API key 
     # to use another API key, use `r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")` 
     # instead of `r.recognize_google(audio)` 
     data = r.recognize_google(audio) 
     print("You said: ", data) 

    except sr.UnknownValueError: 
     print("Google Speech Recognition could not understand audio") 
    except sr.RequestError as e: 
     print("Could not request results from Google Speech Recognition service; {0}".format(e)) 

    return data 


def hobo(data): 
    if "how are you" in data: 
     speak("I am fine") 

    if "what time is it" in data: 
     speak(time.ctime()) 

    if "where is" in data: 
     data = data.split(" ") 
     location = data[2] 
     speak("Hold on Sir, I will show you where " + location + " is.") 
     os.system("chromium-browser https://www.google.nl/maps/place/" + location + "/&") 

# Starts the program 
#time.sleep(2) 
speak("Testing") 

while(data != "stop"): 
    data = audioIn() 
    hobo(data) 
else: 
    quit 
+0

質問を具体的にすることはできますか? Stackoverflowは、人々にコードを投げ、何が間違っているのかを期待するサイトではありません。コード内でどこがクラッシュしますか? –

+0

そして私が最初に思ったのは、ファイルを正しく閉じていないということだったので、再度開いてみると、既に使用されていました。文字列変数( 'sound_file.close()')に '.close()'を呼んでいるようです。 Mutagenでやるべきことは本当ですか?私はあなたのためにドキュメントを読む時間を取るつもりはありません。 –

+0

ありがとう、大変申し訳ありませんが、これは私がstackoverflowを使用した初めてです。私は次回にもっとうまくいくでしょう:) あなたは実際に右の方向に私を指すのを助け、play_music関数にmp3.save()を追加すると進歩に役立ちました。 ありがとうございました! – BrotherHelmer

答えて

0

私はすでに上に行った元のスレッドのいずれかの修正を見つけました。修正、削除()関数のようにのように実装しました:

def delete(): 
    time.sleep(2) 
    pg.mixer.init() 
    pg.mixer.music.load("somefilehere.mp3") 
    os.remove("audio.mp3") 

、それが最終的に削除()関数が含まれてplay_music()関数を変更する(と私はのsound_file.close()文を削除しましたコース)。

関連する問題