2010-03-11 12 views
2

Je souhaite pouvoir lire l'audio que j'ai enregistré à l'aide de la vitesse AVAudioRecorder @ 1.5x ou 2.0x. Je ne vois rien dans AVAudioPlayer qui supportera cela. J'apprécierais quelques suggestions, avec du code si possible, sur la façon d'accomplir cela avec l'iPhone 3.x SDK. Je ne suis pas trop préoccupé par l'abaissement de la hauteur pour compenser l'augmentation de la vitesse de lecture, mais être en mesure de le faire serait optimal.iPhone SDK: Modifier la vitesse de lecture à l'aide de l'audio principal AVAudioPlayer

Répondre

1

Voir this question. En d'autres termes, vous devrez utiliser une API différente comme les services de file d'attente audio. Si vous voulez essayer un hack simple, vous pouvez essayer de doubler la propriété de fréquence d'échantillonnage du fichier audio. Cela ne fonctionnera probablement pas. Aussi, soyez averti que c'est assez exigeant de CPU pour ajuster la vitesse de lecture tout en gardant la même hauteur. Vous devrez utiliser l'une des techniques disponibles, appelées "time stretching". Aussi, au cas où vous ne l'auriez pas encore réalisé, faire des choses compliquées avec de l'audio sur l'iPhone est un gros problème car la documentation d'Apple est généralement soit très mauvaise, soit inexistante.

+0

Merci pour la réponse. – memmons

+0

Donc, si j'effectue un enregistrement à une fréquence d'échantillonnage de 8000, le fait de changer théoriquement la fréquence d'échantillonnage à 12000 pour la lecture devrait aboutir à une vitesse de 1.5x? – memmons

+0

Oui, si cela prend des taux d'échantillonnage arbitraires plutôt que des taux communs (44100, 22050, etc.). Je pense que ce sera le cas, mais je ne l'ai pas essayé. –

2

La modification de la fréquence d'échantillonnage devrait fonctionner exactement comme un magnétophone si vous l'avez joué plus rapidement. Tout devient plus haut dans la pelouse. Pour conserver la même hauteur, vous devez configurer un graphique d'unité audio qui inclut l'effet AUPitch et réduire la hauteur du son par le même rapport que vous augmentez la fréquence d'échantillonnage.

+0

Merci pour cela. – memmons

0

Si vous souhaitez lire l'audio plus rapidement ou plus lentement, il existe une méthode intégrée dans avAudioPlayer. Avez-vous essayé la propriété AudioPlayer Rate? dans Swift, il sera comme ça -

audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf") 
    audioP.enableRate = true 
    audioP.prepareToPlay() 
    audioP.rate = 1.5 
    audioP.play()