2013-03-09 10 views
7

私は音を録音していますが、音(音程、周波数、確信がない)に基づいて画像を動かすようなものを作ろうとしています。音の周波数に基づいて画像を動かすか?

私は記録を達成することができます。私は画像シーケンスもその場で行いますが、別々に行います。私は音頻度に基づいて/アニメーションの画像を移動することができますどのように、 app url here

私の質問は次のとおりです。 私は情報だけのために、それをリンクする方法を確認していない、私は 口ムーバアプリのような何かを達成しようとしています。

おかげ

+0

これは、言い回しているようなものの口を動かすアプリケーションのための文字通りですか?ほとんどの音声合成システムでは、コールバック機能を使用して再生時に口がどのような音の音のデータストリームを取得できるようになります。これは単なる例ですか? – ojblass

+0

はい、この例は私の要求と非常によく似ています。この例ではリアルタイムの音声に取り組んでいますが、録音されたサウンドに取り組んでいます。ユーザーは最初にサウンドを録音し、録音したオーディオを再生すると、周波数/ピッチ。 – iscavengers

答えて

5

私は解決策を完了しました。使用されたDiracと問題が解決しました。

編集:

この意味は?

DiracAudioPlayerは、Diracの機能をすべて便利な方法でラッピングし、AVAudioPlayerに似たAPIを公開する新しいCocoaクラスのセットです。これはAVAudioPlayerサブクラスではないことに注意してください。 以下は、APIのコア機能と説明です。

DiracAudioPlayerコアは

DiracAudioPlayerを同時にリアルタイムでオーディオファイルの速度とピッチを変化させながら(MPMediaItems含む)オーディオフォーマットの様々なファイルベースの再生を可能にするクラスのセットです。特長バージョン3.6は、DiracAudioPlayerBase(ファイルIOと再生を扱う基本クラス)、DiracAudioPlayer(Dirac Core APIをラップする)、DiracFxAudioPlayer(DiracFx APIをラップする)で構成されています。

"ExtAudioFile"と "util"フォルダだけでなく、プロジェクトに3つのクラスをすべて含めて、Accelerate.frameworkとCoreAudio.frameworkをプロジェクトに追加してください。 MacOS Xでは、AudioUnit.frameworkも追加する必要があります.iOSではAudioToolbox.framework、AVFoundation.framework、MediaPlayer.framework、CoreMedia.frameworkを追加する必要があります。

DiracAudioPlayerが...

です...時間を再生するAppleの互換クラスは、iOS(バージョン4以降)とのMacOS X(バージョン10の両方で動作するオーディオを伸ばしました。

- (id) initWithContentsOfURL:(NSURL*)inUrl channels:(int)channels error: (NSError **)error; 

Initializes and returns an audio player for playing a designated sound file. A URL identifying the sound file to play. The audio data must be in a format supported by Core Audio. Pass in the address of a nil-initialized NSError object. If an error occurs, upon return the NSError object describes the error. To use an item from the user's iPod library supply the URL that you get via MPMediaItem's MPMediaItemPropertyAssetURL property as inUrl. Note that FairPlay protected content can NOT be processed. 


- (void) setDelegate:(id)delegate; 
- (id) delegate; 
:6以上) ... を非常に使いやすい...完全ARC互換 は... 2012年11月にリリースされ、完全なソースコード

DiracAudioPlayerのAPI

バージョン3.6には、次の呼び出しを提供しています含めてお届け

クラスの代理人を設定/取得します。あなたはデリゲートプロトコルを実装する場合、それが

- (void) changeDuration:(float)duration; 
- (void) changePitch:(float)pitch; 

変更再生速度と音程を再生し終わると、DiracAudioPlayerは

- (NSInteger) numberOfLoops; 
- (void) setNumberOfLoops:(NSInteger)loops; 

A value of 0, which is the default, means to play the sound once. Set a positive integer value to specify the number of times to return to the start and play again. For example, specifying a value of 1 results in a total of two plays of the sound. Set any negative integer value to loop the sound indefinitely until you call the stop method. 

- (void) updateMeters; 

を呼び出す前に呼び出す必要があり

- (void)diracPlayerDidFinishPlaying:(DiracAudioPlayerBase *)player successfully:(BOOL)flag 

の実装を呼び出します内部測定値を更新するための-peakPowerForChannel

- (float) peakPowerForChannel:(NSUInteger)channelNumber; 

A floating-point representation, in decibels, of a given audio channel’s current peak power. A return value of 0 dB indicates full scale, or maximum power; a return value of -160 dB indicates minimum power (that is, near silence). If the signal provided to the audio player exceeds ±full scale, then the return value may exceed 0 (that is, it may enter the positive range). To obtain a current peak power value, you must call the updateMeters method before calling this method. 


- (BOOL) prepareToPlay; 

Starts the Dirac processing thread and prepares the sound file for playback. If you don't call this explicitly it will be called when calling -play 


- (NSUInteger) numberOfChannels; 

オーディオプレーヤーに関連付けられたサウンドのオーディオチャンネルの数。 (読み取り専用)

- (NSTimeInterval) fileDuration; 

オーディオプレーヤーに関連付けられているサウンドの合計時間を秒単位で返します。 (読み取り専用)

- (NSTimeInterval) currentTime; 
- (void) setCurrentTime:(NSTimeInterval)time 

Returns the current play time in the input file. Note that if you apply time stretching, -currentTime will reflect the slowed down time depending on the time stretch factor. 

IMPORTANT CHANGE: In previous versions this value returned the total play time independent of the position in the file. Please update your code accordingly to reflect the change 

Setting this property causes playback to fast forward or rewind to the specified play time. 


- (void) play; 

Plays a sound asynchronously. Returns YES on success, or NO on failure. Calling this method implicitly calls the -prepareToPlay method if the audio player is not already prepared to play. 

- (NSURL*) url; 

オーディオプレーヤーに関連付けられたサウンドのURL。

- (void) setVolume:(float)volume; 
- (float) volume; 

0.0から1.0までのオーディオプレーヤーの再生ゲインです。

- (BOOL) playing; 

A Boolean value that indicates whether the audio player is playing (YES) or not (NO). (read-only). To find out when playback has stopped, use the diracPlayerDidFinishPlaying:successfully: delegate method. 

- (void) pause; 

Pauses playback; sound remains ready to resume playback from where it left off. Calling pause leaves the audio player prepared to play; it does not release the audio hardware that was acquired upon calling -play or -prepareToPlay. 

- (void) stop; 

Stops playback and undoes the setup needed for playback. Calling this method, or allowing a sound to finish playing, undoes the setup performed upon calling the -play or -prepareToPlay methods. 
+0

あなたは 'Dirac'についてもっと詳しく説明できますか?それは将来他人を助けるかもしれないからです。それのためにupvoting。 – viral

+0

@Matt ... done :)提案していただきありがとうございます – iscavengers

1

は、ほとんどのテキストを音声に変換するシステムでは、あなたがあなたに生産されている音素(素人的に音を)送りますコールバック関数を登録することができます。 linkを見てください。左側のコールバックをクリックします。 SpeechPhonemeProcPtrを見てください。このSpeechPhonemeProcPtrでは、ノイズが "uh"、 "th"、 "ah"などのノイズが発生したときに呼び出される関数を登録できます。あなたはその特定の音を作るときに人の口がどのように見えるかのようにイメージを更新します。これはIBMのViaVoiceで非常に簡単でした。私はiPhoneでそのようなアプリケーションをコーディングしたことはありませんでしたが、これは音声にマッチさせるよりも優れていると思います。

本当にフィルタリングされていないオーディオであれば、それを音声認識システムに渡し、認識されたテキストをTTSシステムに渡して音素を取得することができます。

関連する問題