問題タブ [amr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
blackberry - BlackBerry でのライブ AMR オーディオの視覚化
オーディオをうまく録音するコードがあります。録音中にオーディオの視覚化、波形のようなもの、または単純な温度計スタイルの視覚化を追加して、ユーザーが何かが録音されていることを認識できるようにしたいと思います。録音されたオーディオの現在の音量のようなものを取得するために照会できるリスナーまたはメソッドが見つかりませんでした。現時点では、AMR バイトストリームを解析して直接視覚化できると考えていますが、この機能の複雑さは非常に難しいため、より簡単な API を使用できることを期待していました。または、Java-ME amr 解析コードについて知っている場合は、それも役立つ可能性があります。現在のオーディオを測定するより直接的な方法があることを望んでいたため、AMR 側についてはまだあまり調査していないことを認めます。音量レベル。
android - MediaRecorder と ParcelFileDescriptor.createPipe()
私の仕事は、音声を長時間録音し、認識テキスト用に 3 秒のファイルをサーバーに送信することです (そのために Google を使用します)。ファイルに直接書き込む場合、レコーダーを再初期化して新しいファイルを開始する必要があり、メディアレコーダーの開始と停止に時間がかかります。そのため、ParcelFileDescriptor.createPipe() を使用することにしました。これが、レコーダーを作成して初期化する方法です。
次に、記録データを読み取る入力ストリームを作成します。
このリーダーから読み取ったデータを FileOutputStream に書き込みます。
3 秒ごとに新しいファイルと新しい FileOutputStream を作成し、前のファイルからサーバーにデータを送信します。
ARM形式に従ってバイトを読み取っています(ファイルヘッダー、すべてのフレームのヘッダービットを読み取り、次にフレーム全体を読み取るよりも)。
Android 2.3.3 を搭載した Nexus One では問題なく動作しますが、Galaxy S III、Galaxy Nexus、および LG p990 では、デバイス プレーヤーが読み取ることができず、Google が認識できない何かを書き込みます。Google レコグナイザーは、「ok ok」や「######」のようなものを返します (ファイルに何らかのノイズが含まれているようです)。
なぜこれが別の電話/プラットフォームで同じように機能しないのか、誰かが知っていますか?
ありがとう、
PS 私は AudioRecord を使用できません – Google には AMR (または speex、または flac) が必要です
audio - 不明なオーディオ形式 - どこを掘り下げますか?
私の Android フォン (Philips Xenium W632) では、独自のソフトウェアで通話を録音するオプションがあります (外部プログラムなしで、このオプションはサービス メニューでオンになっています)。問題は、私が試したどのプレーヤーでも結果のフォーマットがわからないことです。内容を見ると、ファイルは圧縮または暗号化されていないように見えるため、この分野に詳しい人にとっては形式を認識するのはそれほど難しくないでしょう。この質問はおそらく SO で質問するには具体的すぎると思いますが、そのような人々がコミュニケーションをとるアクティブなフォーラムを私は知りません。ですから、そのようなリソースのヒントを教えていただければ幸いです。この質問のより正しいタイトル/タグに関するアドバイスもいただければ幸いです。
技術情報: ファイルには「Mon_Apr_2013__10_48_56.vm」のような名前が付けられ、すべてヘッダー 0x66 0xAA から始まり、毎秒約 7.9 kb の記録が行われます。もちろん、サンプルファイルを提供できます。
アップデート。1) ここにサンプル ファイルを置きます: 10 秒の録音、133 kB ; 122秒収録、975kB
2) 「Samsung VoiceMemo ファイル」の一種であると仮定して、最初にQualComm PureVoice コンバーター、次に PureVoice アプリケーション、次に Samsung PC Studio バージョン 7.2.24.9 を試しましたが、すべて失敗しました。
3)MediaInfoを試しました(@Janの提案に感謝します)-ファイルを認識できませんでした。
c# - wp8 で .amr ファイルを再生できません
AudioVideoCaptureDevice を使用して音声を録音し、amr 形式で分離ストレージに保存します
Windows Media Player で再生できます。しかし、WP8のSoundEffectで再生できません。
理由を知り、この問題を解決するのを手伝ってください。ありがとう。
android - Androidでaac/amrをpcmに変換する方法
Android デバイスに録音されたサウンド ファイルがいくつかあり、それらは aac としてエンコードされています (mp4 コンテナー内)。amr (3gpp コンテナー内) としてエンコードされたものもあります。オーディオ波形を にプロットする目的で、両方のタイプを生の PCM データ値に変換したいと考えていCanvas
ます。
この変換を行うことができるアンドロイドに組み込まれたライブラリはありますか? 標準的な方法がない場合、これに最も一般的なサードパーティのライブラリは何ですか? 私が見つけた例の大部分は、PCM から他のファイル形式へのエンコードであり、PCM へのデコードではありません。
ありがとう。
編集: 可能であれば、NDK を使用しないことをお勧めします。
android - 録音時の波形を表示し、録音再生時の波形と同期させる方法
私は、録音中に波形を表示するという問題に遭遇しました。録音を続けると波形が少しずつ表示され、同じレコードを再生している間は波形が同じになるはずです。
そして録音フォーマットはamrでお願いします。
以下は私が試したことです: mediarecord の getMaxAmplitude を使用して値を取得し、Drawline を使用してそれを描画しました。録音時点で。
次に、波形を録音と再生で同じように表示する方法と、cheapAmr.java から録音の振幅を取得する方法を尋ねたいと思います。
recforce : https://play.google.com/store/apps/details?id=dje073.android.audiorecorderlite&hl=zh_CN
リングドロイド: https://play.google.com/store/apps/details?id=com.ringdroid
android - Android - AMR オーディオ ファイルの長さをプログラムで取得する
AMR ファイルの期間を取得するにはどうすればよいですか?
MediaPlayer を作成せずに録音を停止した後、ファイルの長さを取得し、そこから長さを取得したいと考えています。通常の Wav ファイルの場合は、次のようにします。
しかし、AMR については byteRate を知りませんでした。WAV は生の PCM データ (圧縮されていない) であり、AMR は圧縮されているため、これで問題ないかどうかはわかりません。
java - AMR-NB ファイルから音声フレームを抽出する
AMR ファイルから各フレームを抽出するアルゴリズムを作成しました。ファイルの最初の 6 バイトがヘッダーであり、次の情報がオーディオ フレームであると考えました。各オーディオ フレームは、フレーム ヘッダーとオーディオ データで構成されます。フレーム ヘッダーは、フレームのサイズをバイト単位で示します (CMR モード テーブルを使用 - http://www.developer.nokia.com/Community/Wiki/AMR_format )。フレーム サイズは、フレームの 1 バイト目 -> 2 ビット目から 5 ビット目に格納され、MSB を 1 ビット目として数えます。
アルゴリズムが機能せず、各バイトを 2 進数 (0 と 1) で画面に表示することにしました。フレーム サイズの数値が 7 よりも大きく、CMR テーブルに 0...7 の値しかない場合があります。
以下は CMR テーブルです。
私の出力(amrファイルからの各バイト)は次のとおりです。
バイト番号 6 を取得しました: 10011110 -> 0011 は番号 3 で、対応する 3 の CMR 値は 18 です。18 バイトをスキップし、バイト番号に到達します。6+18 = 24: 00000000 - 0 の CMR 値は 13 で、別の 13 バイトをスキップします -> 24+13=37: 01101110 -> 1101is 13 WHICH ISN'T IN CMR table
私が間違っていることは何ですか?バイナリ形式での印刷は正しいと思います。以下は、各フレームを読み取るためのアルゴリズムです (バイナリの方法を表示するためではありません)。
[EDIT]
byte から BitSet への変換が間違っているため、アルゴリズムが失敗するようです。バイト番号 6 では、数値 121 で表されるはずですが、誤って番号 158 で表されます。また、同じ変換を使用するため、バイナリ出力も間違っています。変換方法を確認しませんでした(ここには投稿しませんでした)。迷惑をかけてごめんなさい。