Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распознавание слов на Java, Написание системы распознавания  
:(
    Опции темы
Kor1
Дата 25.12.2013, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



А можете помочь с составлением массива?)

Не хочется подключать дополнительные библиотеки,по хардкору!))


PM MAIL   Вверх
Stolzen
Дата 25.12.2013, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Цитата(Kor1 @  25.12.2013,  14:00 Найти цитируемый пост)
А можете помочь с составлением массива?)

Не хочется подключать дополнительные библиотеки,по хардкору!))

Какого массива? Какие библиотеки? 


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Kor1
Дата 25.12.2013, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Ну у вас в коде:
Код

import org.apache.commons.lang3.Validate;
import com.google.common.base.Throwables;

Хотелось бы без них.Хардкор!!

А массив байтов файла,вроде всю инфу вытащил

Это сообщение отредактировал(а) Kor1 - 25.12.2013, 20:13
PM MAIL   Вверх
Stolzen
Дата 25.12.2013, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Ну это просто классы-помошники, которые не несут в себе никакой важной функциональности. Т.е. их можно убрать и мало что поменяется. А можете посмотреть какой именно код в них содержится и использовать этот код напрямую. 


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Kor1
Дата 26.12.2013, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Вообще хотелось бы встроить вот эту часть:
Код

  private byte[] readNext(int totalSizeInBytes) throws IOException {
        byte[] bytes = new byte[totalSizeInBytes];
        audioInputStream.read(bytes, 0, totalSizeInBytes);
        return bytes;
    }
 
    private double[] decodeBytes(byte[] bytes, int numberOfSamples) {
        int sampleSizeInBytes = format.getSampleSizeInBits() / BITS_IN_BYTE;
        int[] read = AudioIOUtils
                .decodeBytes(bytes, numberOfSamples, sampleSizeInBytes, format.isBigEndian());
 
        double[] audioSamples = new double[numberOfSamples];
        for (int i = 0; i < numberOfSamples; i++) {
            audioSamples[i] = decodeInt(read[i]);
        }
 
        return audioSamples;
    }


Но если ее встраивать,то придется весь код,тогда перекопировать)) Из чего вообще массив то составлен?
PM MAIL   Вверх
Kor1
Дата 27.12.2013, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Ну простите)) я хоть чуть чуть попытался)


Код

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;

public class mfc {

    private static AudioInputStream audioInputStream;
    private static AudioFormat format;
    private static AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;
    private static int BITS_IN_BYTE = 8;

    public static void main(String[] args) {
        String fileN = "C:\\test\\mix11" + "." + fileType;
        File soundFile = new File(fileN);

        try {
            audioInputStream = AudioSystem.getAudioInputStream(soundFile);
            format = audioInputStream.getFormat();
        } catch (UnsupportedAudioFileException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Общая информация о файле: " + format);
        /*
         * Расширени аудио файла
         */
        System.out.println("Расширение файла: " + fileType.getExtension());
        /*
         * Количество используемых бит на выборку (Significant Bits Per Sample)
         * Величина указывает количество бит, формирующих каждую выборку
         * сигнала.
         */
        int bPs = format.getSampleSizeInBits();
        System.out.println("Бит на выборку: " + bPs);
        /*
         * Количество каналов указывает, сколько отдельных аудиосигналов
         * закодировано в секции данных звука (wave data chunk). Значение 1
         * означает монофонический сигнал, 2 означает стерео
         */
        int NumChannels = format.getChannels();
        System.out.println("Количество каналов(моно = 1, стерео = 2): "
                + NumChannels);
        /*
         * Кодировка аудио файла
         */
        System.out.println("Кодировка: " + format.getEncoding());
        /*
         * Число выборок аудиосигнала, приходящихся на секунду. На эту величину
         * не влияет количество каналов. Частота дискретизации
         */
        int frameRate = (int) format.getSampleRate();
        int SampleRate = frameRate;
        System.out.println("Частота дискретизации: " + frameRate);
        /*
         * Выравнивание блока (Block Align) Количество байт на одну выборку.
         */
        int BlockAlign = bPs / 8 * NumChannels;
        System.out.println("Количество байт на одну выборку: " + BlockAlign);
        /*
         * Среднее количество байт в секунду (Average Bytes Per Second)
         * Величина, показывающая, сколько байт за секунду данных должно быть
         * пропущено через цифроаналоговый преобразователь (D/A converter, DAC)
         * во время воспроизведения файла.
         */
        int AvgBytesPerSec = SampleRate * BlockAlign;
        System.out.println("Среднее количество байт в секунду: "
                + AvgBytesPerSec);
        /*
         * Количество байт, переданных за секунду воспроизведения.
         */
        long byteRate = frameRate * NumChannels * bPs / BITS_IN_BYTE;
        System.out
                .println("Количество байт, переданных за секунду воспроизведения(аналогично AvgBytesPerSec): "
                        + byteRate);
        /*
         * Порядок байтов
         */
        System.out.println("Порядое байтов: " + format.isBigEndian());
        
        int sampleSizeInBytes = format.getSampleSizeInBits() / BITS_IN_BYTE;
        byte[] bytes = null;
        int numberOfSamples = 0;
        int[] read = AudioIOUtils
                .decodeBytes(bytes, numberOfSamples, sampleSizeInBytes, format.isBigEndian());
        
         double[] audioSamples = new double[numberOfSamples];
            for (int i = 0; i < numberOfSamples; i++) {
                audioSamples[i] = decodeInt(read[i]);
            }
    }

    private static double decodeInt(int ival) {
        double ratio = Math.pow(2.0, format.getSampleSizeInBits() - 1);
        return ival / ratio;
    }
}





Код

public class AudioIOUtils {
     
    public static int[] decodeBytes(byte[] bytes, int numberOfSamples, int sampleSizeInBytes, boolean bigEndian) {
        int[] audioSamples = new int[numberOfSamples];
        byte[] temporaryBuffer = new byte[sampleSizeInBytes];
 
        int k = 0;
        for (int i = 0; i < audioSamples.length; i++) {
            // collect sample byte in big-endian order
            if (bigEndian) {
                // bytes start with MSB
                for (int j = 0; j < sampleSizeInBytes; j++) {
                    temporaryBuffer[j] = bytes[k++];
                }
            } else {
                // bytes start with LSB
                for (int j = sampleSizeInBytes - 1; j >= 0; j--) {
                    temporaryBuffer[j] = bytes[k++];
                }
            }
            // get integer value from bytes
            int ival = 0;
 
            for (int j = 0; j < sampleSizeInBytes; j++) {
                ival += temporaryBuffer[j];
                if (j < sampleSizeInBytes - 1) {
                    ival <<= 8;
                }
            }
            // decode value
 
            audioSamples[i] = ival;
        }
        return audioSamples;
    }
}


PM MAIL   Вверх
Kor1
Дата 28.12.2013, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Stolzen,хелп,пожалуйста))

Кстати,а как звуковой файл делить?
PM MAIL   Вверх
Stolzen
Дата 28.12.2013, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Kor1, Я не понимаю, в чем ваша проблема состоит - все необходимое на данном этапе я уже дал. 

Цитата(Kor1 @  28.12.2013,  13:41 Найти цитируемый пост)
Кстати,а как звуковой файл делить? 

Какой и зачем? 

Это сообщение отредактировал(а) Stolzen - 28.12.2013, 17:19


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Kor1
Дата 29.12.2013, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Цитата

Какой и зачем? 


Который мы записали) Чтобы точность была высокая.

На массиве этом застрял,блин,из чего он состоит-то,хочется свой велосипед написать

PM MAIL   Вверх
Kor1
Дата 29.12.2013, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



С наступающим! пока заморозим проект.
PM MAIL   Вверх
Kor1
Дата 1.1.2014, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Уже писал, но все же,читаю массив вот так:
Код

int bytesPerFrame = audioInputStream.getFormat().getFrameSize();
        if (bytesPerFrame == AudioSystem.NOT_SPECIFIED) {
            bytesPerFrame = 1;
        }
 
        int numBytes = 1024 * bytesPerFrame;
        byte[] audioBytes = new byte[numBytes];
        try {
            int numBytesRead = 0;
            int numFramesRead = 0;
            int totalFramesRead = 0;
            // Try to read numBytes bytes from the file.
            while ((numBytesRead = audioInputStream.read(audioBytes)) != -1) {
                for (int j = 0; j < audioBytes.length; j++) {
                    System.out.println("Массив: " + audioBytes[j]);
                }
                numFramesRead = numBytesRead / bytesPerFrame;
                totalFramesRead += numFramesRead;
            }
 
        } catch (Exception ex) {
            ex.printStackTrace();
        }


Выдает примерно такое:
Код

Массив: 0
Массив: 0
Массив: 1
Массив: 0
Массив: 3


Ну и еще таких же 2 тысячи значений,что то тут не так..
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.