2017-04-07 5 views
0

Also habe ich dieses Bit Code, der Text in einer verzögerten Art und Weise, wie Sie in einigen alten Schule oder Indie Videospiele sehen, drucken.Python 3.6: So spielen Sie Audio schneller

Alles funktioniert, aber nicht so, wie ich es möchte. Ich möchte das Drucken und das Abspielen des Sounds schneller sein, da es gerade jetzt zu langsam ist.

Gibt es eine Möglichkeit, dies zu ermöglichen?

Hier ist mein Code:

Hinweis: Diese hinkt in PyCharm sondern arbeitet in Terminal/cmd in Ordnung.

import sys 
import time 
from pydub import AudioSegment 
from pydub.playback import play 



def print_delay(string_in): 
    sound_1 = "text_beep.wav" 
    sound_play = AudioSegment.from_wav(sound_1) 


    for char in string_in: 
     sys.stdout.write(char) 
     sys.stdout.flush() 
     play(sound_play) 

     if char != ",": 
      time.sleep(0.01) 
     if char == ".": 
      time.sleep(0.20) 
     if char == ",": 
      time.sleep(0.10) 

    print("\n") 

string_hello = "Hello World, this is a sample text.\nI want want this to print out faster without being delayed by the sound file.\nIs there any faster way to do this?" 

print_delay(string_hello) 

Antwort

0

Woohoo! Ok, ich habe es herausgefunden.

das Modul verwenden genannt: „Pyglet“

Ich bin nicht 100% sicher, aber es wie Pyglet aussieht können Sie festlegen, dass Ihre Sounddatei ein kurzer Ton ist. Wenn dies der Fall ist, können Sie das Argument "streaming = False" übergeben, das besagt, dass der Sound sofort abgespielt wird und im Gegenzug weniger CPU-Leistung verbraucht wird. Ich bin mir nicht sicher, ob das die Sounddatei so spielen lässt, wie ich es möchte, aber es könnte.

Wenn jemand sicher weiß, lass es mich wissen.

Hier ist meine Quelle: https://pythonhosted.org/pyglet/programming_guide/playing_sounds_and_music.html

import sys 
import time 
import pyglet 



def print_delay(string_in): 
    sound_1 = pyglet.resource.media("text_beep.wav", streaming=False) 


    for char in string_in: 
     sound_1.play() 
     sys.stdout.write(char) 
     sys.stdout.flush() 

     if char != ",": 
      time.sleep(0.05) 
     if char == ".": 
      time.sleep(0.70) 
     if char == ",": 
      time.sleep(0.50) 


    print("\n") 

string_hello = "Hello World, this is a sample text.\nI want want this to print out faster without being delayed by the sound file.\nIs there any faster way to do this?" 

print_delay(string_hello)